MapReduceジョブ群の実行
Hadoopクラスタの起動に成功したら、hadoop-0.17.2.1-examples.jarにバンドルされているサンプル用のMapReduce Javaクラスファイル群の1つを実行してみることで、実際に動作する様子を確認することができる。ここでは、テキストファイル中から指定の文字列とマッチする部分を抽出して、該当箇所の数をカウントするGrepというサンプルを試してみよう(紛らわしいが、このサンプル名は先頭を大文字とするのが正式である)。
この場合、Grep用のインプットセットを最初に準備しておかなくてはならない。ここでの実行例では、conf/ディレクトリに格納したファイル群をGrepにインプットさせるようにした。Grepを実行すると、正規表現にて指定された検索文字列に対し、それにマッチする部分が抽出され、処理が正常に終了したかのチェックが行われる。この場合のパラメータとしては、インプットとアウトプット(出力データを格納させるDFSのディレクトリ)および、検索対象とする正規表現の文字列を指定しなければならない。
bin/hadoop dfs -copyFromLocal conf input bin/hadoop dfs -ls Found 1 items /user/amit/input <dir> 2008-10-12 00:38 rwxr-xr-x amit supergroup bin/hadoop jar hadoop-0.17.2.1-examples.jar grep input grep-output 'dfs[a-z.]+'
処理終了後の結果については、ローカルのファイルシステムにコピーされた出力結果を使って、意図どおりの処理が行われていたかを確認して頂きたい。なお、HadoopのデータはDFS上のブロック群として格納されるため、通常使われるUnixの:/p>コマンドでは表示できないようになっている。
bin/hadoop dfs -get grep-output output cd output ls 3 dfs. 3 dfs.class 3 dfs.replication 2 dfs.period 1 dfs.max.objects ...
HadoopのHDFSおよびJobTrackerのモニタリングについては、バンドルされているWebアプリケーションを介して行うようになっている。HDFSの管理パネルを呼び出すには「http://NameNode IPaddr:5070」を入力すればよく(スクリーンショットを参照)、同じく、現在実行中のジョブおよび過去に実行または失敗したジョブの履歴は「http://JobTracker IPaddr:50030」によりアクセスできる(スクリーンショットを参照)。
クラスタで行うべき作業の終了後、HDFSを停止させるには、NameNodeにてbin/stop-dfs.shコマンドを実行し、MapReduceを停止させるには、JobTrackerにてbin/stop-mapred.shコマンドを実行すればいい。
Hadoopのスケーラビリティに関しては、4,000ノードをサポートさせたという事例が知られている。初心者の場合、最初は小規模なクラスタから始めるのが常道だが、その後は必要に応じて拡大させていけばいいだろう。後日、実際に導入した成功事例などを紹介して頂ければ幸いである。
Amit Kumar Sahaは、コンピュータサイエンスおよびエンジニアリングを専行するインド出身の学生で、Linuxやオープンソースソフトウェアを始め、主として初心者を対象としたテクニカル関連の記事を執筆する傍ら、オープンソース関連のドキュメント作成プロジェクトにも貢献者として参加している。
