強力な助っ人にきていただいたお陰で無事Hadoopが動きました。
今回学んだ検証の手順として、
・最小構成からインクリメンタルに確かめる
・一度一度ログを見て動作をチェックする
ということでした。
単純なことのように見えて、常にこの二つを守るのは難しいと思い知らされました。
Hadoop固有の事柄としては、
・まずDFSの動作を確認してから他のデーモンを動かす
・logs以下に各ノードのデーモンごとのログがあるので面倒くさがらずにちゃんと見る
の二点です。
GSICのSさん、本当にありがとうございました。
実際にTeraGenとTeraSortを動かしてみたのでその結果も載せます。
sb01 - sb08 8node (Opteron 1.6GHz x2 Mem 4GB)
$ bin/hadoop jar hadoop-0.20.2-examples.jar teragen -Dmapred.map.tasks=400 80000 input
$ bin/hadoop jar hadoop-0.20.2-examples.jar terasort input output
TeraGenのオプションは一つ目が分割数(タスク数?)、二つ目がサイズ、三つ目が格納されるDFSのディレクトリ。
TeraSortのは見たとおり。
TeraSortの実行中の各計算ノードのCPU使用率は0%が1秒ほど続いた後100%が2秒ほど、を繰り返す模様。
-d 0.5のtopコマンドの目視なので怪しいかもしれない。
実行時間全体はtimeコマンドによると、
real 3m1.430s
user 0m3.284s
sys 0m0.353s
となっている。
これを4ノードに減らして実行してみると、timeコマンドは、
real 5m26.371s
user 0m3.671s
sys 0m0.383s
二倍近く高速化されていることが確認できた。
ノード数などを変更する際には、/tmp/hadoop-`whoami`*を消す必要があるっぽい。
dfsを再フォーマットする必要もありそう。