hadoopの入門書「hadoop徹底入門」のキーワード


Hadoop徹底入門 第2版 オープンソース分散処理環境の構築/翔泳社
¥3,990
Amazon.co.jp

レスポンスタイム(レイテンシ,latency)
スケーラビリティ(拡張性)、スケールアップ、スケールアウト、スループット
Hadoopマスタサーバ(JobTracker,NameNode)、Hadoopスレーブサーバ(TaskTracker,DateNode)
HDFS:分散ファイルシステム、MapReduce:クラスタ環境で並列分散処理、Hive、Pig、Sqoop,HBase,ZooKeeper
IAサーバ、1U、2U、ラック
透過性、拡張性、HA構成(冗長化)、多重度、メタ管理、インデックス
シーケンシャル(連続的)、Map,Shuffle,Reduce
運用事例、Posデータ解析によるフィードバック、webアクセスログ解析、全文検索転置インデックス、統計的機械翻訳、フォーマット・画像変換、機械学習:金融市場の同席分析、遺伝子解析、気象予測、渋滞予想、音声認識、文字認識のパターン認識
不正要求のフィルタリング()、重複除去
形態素解析、CDH(Clouderas distribution in cluding Apache Hadoop)
ローカルモード、疑似分散モード、完全分散モード
DateNode,NameNode,レプリケーション、レプリカ、ファイルシステム、ブロック、ブロックサイズ64MB、死活監視
ack待ちキュー、DataNodeパイプライン、メタデータ、パーミッションクオータ、quota(割当)、パケット
ハートビート:DateNodeがNameNodeに自身の生存を伝えるパケット
ラックアウェアネス:レプリカの配置をコントロールする。同じラックにならないようにとか
ブロックレポート
fsimage:ファイルシステムイメージ、チェックポイント
edits:編集履歴、トランザクションログ(write-ahead log)
HDFSクラスタ、最小レプリケーション、セーフモード
ファイル・ディレクトリのパーミッション、POSIXライク、setuid,setgid,stickyビット
HDFS設定ファイル:core-site.xml,hdfs-site.xml,hadoop-env.sh,hadoop-metrics.properties,hadoop-poliy.xml(ACLのポリシー)
JPSコマンド:java仮想マシンプロセスステータスツール
HAクラスタ、非HA構成、SecondaryNameNode
hdfsコマンド、dfsサブコマンド、CLIベース、ディレクトリ・ファイルを作成したり、コピーしたり、所有者・権限を変更したり、削除したり・・・
MapReduceフレームワーク:map,Shuffle&Sort,Reduce,Map処理、スプリット(入力データ、InputSplit)、キーバリュー解釈、Partitioner,Reducer,Combiner、マージソート、パーティション(Reduce処理の入力)
MapReduceのノード構成、処理単位は「ジョブ」「タスク」野二つ。ジョブはフレームワーク内で複数のタスクに分割。JobClient,JobTracker,TaskTracker
JobTracker:分散処理制御の司令塔。単一障害ポイント
TaskTracker:ワーカプロセス、childeプロセス
データローカリティ:データファイルを移動するのではなく、データを操作するプログラムを移動する。大容量データの移動は転送料、オーバーヘッドがでかい。
ジョブID,タスクID、処理スロット状況、ストット数:taskTrakerで並列で実行する単位。
mapResuceの設定ファイル:/etc/hadoop/conf/内。mapred-site.xml、hadoop-env.sh,hadoop-metrics.properties,hadoop-policy.xml
mapred-site.xml,mapred.job.trackerプロパティ、Jobtrackerの起動ホストとポート/番号

/var:ステージング用のディレクトリ
serviceコマンドでjobtracker,tasktrackerのサービスを起動。
動作確認、起動した事の確認方法は、jps、netstat、psコマンド
$ps ef | grep mapreduce


CLIのMapReduce管理:job,queue,mradmin

macのeclipseで通常の実行は出来るけど、デバッグ実行しようとすると下のエラーが発生した。

ERROR: transport error 202: recv failed during handshake: Connection reset by peer

ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)

JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:750]

FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)

関係ないと思いつつ、環境変数のJAVA_HOMEを設定し、PATHに$JAVA_HOME/binを追加してみたけど、やっぱり解決しない。

refs
eclipse debug/faq i can run a program but not debug it???

[2013/11/26 add]

ネットで色々調べてみたけどやっぱり解決できない。ただ、macにeclipseをインストールするときに最初にkepler単体を入れて、その後にpleiadesを入れた訳だけと、kepler単体のeclipseを起動してみたら、デバッグモードでも実行できた…

refs
mac memo eclipse

[2013/11/26 add 2]
再度、pleiadesのplugins,dropins,featuresディレクトリをkeplarのeclipseにコピーしたらデバッグもできた。ただ、英語のまま
shellスクリプトメモ

■コマンド名だけで実行できるようにする
例えば、hogeというスクリプトを作って実行権限を付与する。この状態だとカレントディレクトリで./hogeで実行できる。すべてのディレクトリにおいて、hogeで実行できるようにしたい。

とりあえずの方針としては、環境変数のPATHに/bin/myshディレクトリを追加してそこの自作してシェルをおくようにする。

$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

$ export PATH="${PATH}:/usr/mysh"

$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/mysh

$mv hoge /usr/mysh/

$hoge

実行できた。ただ、これだとターミナルをログアウトして再ログインしたときに実行できなくなってしまうので、~/.bash_profileあたりのファイルに「export PATH="${PATH}:/usr/mysh"」の一行を書く。

refs
bashシェルスクリプト入門~シェルスクリプトのいろは
環境変数を書き込むの に.bash_profileとかなにを使えばいいか迷う

virtualBoxについてのメモ。インストールは省き。

■macにubunutu64bitをインストール

refs:MacでLinuxを動かす!VirtualBox及びubuntuのインストール方法

ubuntuのisoイメージファイルはUbuntu Desktop 日本語 Remixのダウンロードから、64bit盤のubuntu-ja-13.10-desktop-amd64.isoをおとして、それを使った。


windowsでもやってみたけど、起動時に下のエラーが出た。
"This kernel requires an x86-64 CPU ,but only detected an i686 CPU.Unable to boot - please use a kernel appropriate for your CPU."

ネットで調べたらbiosのvirtualization tehnologiresをenbabledとあったから、やってみたけどだねだった。で、64bitのubuntuイメージファイルを落としてきて、32bitのubuntuをvirtualboxで初期化してたって落ちだった・・・


■cenos64bitをインストール

準備としてisoイメージファイルを落とす。
virtualboxの新規でlinuxを選択しても、サブコンボボックスにcentosはない。けど、入力欄にcentosと入力すると、linux/redhad(64bit)が選択状態になる。これを新規作成する。

isoファイルはhttp://ftp.jaist.ac.jp/pub/Linux/CentOS/6.4/isos/x86_64/からCentOS-6.4-x86_64-bin-DVD1.isoを落とした。それで起動してインストールを実行。インストール中にerrorが出たからすぐに断念。もしかしてDVD2.isoも必要とか。とりあえずここであきらめ。たして粘ってないけど

refs
virtualboxにcentos64bitをインストール
virtualboxにlinux(cenos6)をインストール
⇒centosのダウンロード参照。メディアドライブでもよさそう。

[2013/12/31追記]

下のrefsからcentosのisoファイルCentOS-6.4-x86_64-minimal.isoを落としたらできた。ただ、minimalバージョンのせいかCUIモードだった・・・最初のcentosのインストーラではテキストモードを選択したわけじゃないんだけど

refs
Index of /Linux/centos/6.4/isos/x86_64
centos mirror

■ネットワーク設定
ゲストOSのcentos minimalのネットワーク設定について。curlうってもだめだし、ifconfigはloだけ。routeコマンドはルーティングテーブル情報なし。ifupコマンド実行したら、とりあえずネットにつながるようになりました。
# ifup eth0

refs
virtualboxにcentosを入れてネットワークの設定をした

■スナップショット
・基本的に電源オフにしたらすべてデータは消える。保存状態ならおっけ。データを残したい場合、電源オフの前にスナップショットをとっておく。そして、復元すればおっけ。


eclipseで新規ソフトウェアをインストールするために、リポジトリのURLを追加するのはいいのだkれど、少しURLを変更したい場合に重複とかいって変更や追加ができない。で、一旦削除しようとしても、どこで削除したらいいかも解らん・・・
で、キーワードのURLでgrepをかけたら、下の二つのファイルがヒットして、直接削除したらうまくいった・・・

C:\pleiades\eclipse\p2\org.eclipse.equinox.p2.engine\profileRegistry\epp.package.jee.profile\.data\.settings\org.eclipse.equinox.p2.artifact.repository.prefs(663,61)  [SJIS]: repositories/http\:__eclipse.seasar.org_update_3.2/nickname=seasar_org_3_2
C:\pleiades\eclipse\p2\org.eclipse.equinox.p2.engine\profileRegistry\epp.package.jee.profile\.data\.settings\org.eclipse.equinox.p2.metadata.repository.prefs(579,61)  [SJIS]: repositories/http\:__eclipse.seasar.org_update_3.2/nickname=seasar_org_3_2