スタンドアローンモードでの動作やビルド方法を確認したら、次は疑似分散モードです。
スタンドアローンモードではローカルのファイルシステムを使っていたのに対し、疑似分散モードでは分散ファイルシステム(HDFS)を使います。もちろん、マシンが1台なので、HDFSのコンテンツは本当はローカルにあるわけですが、見た目はそうではなくなります。
利用方法は、クイックスタートのとおりです(前に作成した入力データinputがあるとして)。
- 設定用のXMLファイル(core-site.xmlとhdfs-site.xml, mapred-site.xml)を書き換える
- パスフレーズなしでlocalhostにssh接続できるようにする
- HDFSのフォーマット
bin/hadoop namenode -format
- Hadoopデーモンの起動
bin/start-all.sh
- 入力ファイルをHDFSにコピー(3番目の引数はローカル、4番目の引数はHDFSのファイル名)
bin/hadoop fs -put input input
- プログラムの実行(WordCountの場合)
bin/hadoop fs -rmr output bin/hadoop jar hadoop-0.20.1-examples.jar wordcount input output
- HDFS上の結果を読む
bin/hadoop fs -cat "output/*" a 3 b 3 c 2
- Hadoopデーモンの停止
bin/stop-all.sh
HDFSの様子はhttp://localhost:50070/で、MapReduceの様子はhttp://localhost:50030/でわかります。(外部からでも見えますが、その場合にはファイアウォールを正しく設定しておく必要があります。)
ヒント
- デーモンを起動する前にフォーマットする
- うまくいかないときは、デーモンを停止させてから/tmp/hadoop*を削除し、やり直す
つづく
- Eclipseプラグイン
- 完全分散モード
- Cloudera’s Distribution for Hadoop