Hadoopを用いたクラスタコンピューティング環境の構築Leverage OSS(2/2 ページ)

» 2008年11月05日 00時00分 公開
[Amit Kumar Saha,SourceForge.JP Magazine]
SourceForge.JP Magazine
前のページへ 1|2       

Hadoopのスタートアップ手順

 Hadoopクラスタを使用するには、HDFSおよびMapReduceを両方とも起動しておく必要がある。そのための準備としては、NameNodeのHADOOP_HOMEに移動し、bin/hadoop namenode -formatといったコマンドを用いて、新規の分散ファイルシステムのフォーマットを行っておかなくてはならない。この処理の完了後にHDFSを起動させるが、それにはターゲットとなるNameNodeで後記のコマンドを実行すればいい。


$ bin/start-dfs.sh

starting namenode, logging to /home/amit/hadoop/hadoop-0.17.2.1/bin/../logs/hadoop-amit-namenode-lenny-sandbox.out 10.10.10.3: starting datanode, logging to /home/amit/hadoop/hadoop-0.17.2.1/bin/../logs/hadoop-amit-datanode-lenny-2.out localhost: starting secondarynamenode, logging to /home/amit/hadoop/hadoop-0.17.2.1/bin/../logs/hadoop-amit-secondarynamenode-lenny-sandbox.out

 このbin/start-dfs.shスクリプトは、NameNodeのconf/slavesファイルを参照して、そこに一覧された全スレーブにおいてDataNodesデーモンを始動させるという機能も有している。

 次に行うMapReduceの始動では、ターゲットとなるNameNodeで以下のコマンドを実行する。


$ bin/start-mapred.sh

starting jobtracker, logging to /home/amit/hadoop/hadoop-0.17.2.1/bin/../logs/hadoop-amit-jobtracker-lenny-1.out 10.10.10.3: starting tasktracker, logging to /home/amit/hadoop/hadoop-0.17.2.1/bin/../logs/hadoop-amit-tasktracker-lenny-2.out bin/start-mapred.sh starting jobtracker, logging to /home/amit/hadoop/hadoop-0.17.2.1/bin/../logs/hadoop-amit-jobtracker-lenny-1.out 10.10.10.3: starting tasktracker, logging to /home/amit/hadoop/hadoop-0.17.2.1/bin/../logs/hadoop-amit-tasktracker-lenny-2.out

 このbin/start-mapred.shスクリプトも、当該JobTrackerのconf/slavesファイルを参照して、そこに一覧された全スレーブでTaskTrackerデーモンを始動させるという機能を有している。

 次に、クラスタが正常に起動しているかのクロスチェックとして、各ノードで実行されているプロセスを、jpsを用いて確認しておく。例えばこの試用例のような3ノードクラスタの場合、NameNodeの一覧中にはJpsとNameNodeに加え、SecondaryNameNodeのプロセスが示されているはずだ。同じくJobTrackerは、JpsとJobTrackerが一覧されているかを確認し、TaskTracker/DataNodeは、Jps、DataNodes、TaskTrackerが一覧されているかを確認する。

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のスケーラビリティに関しては、4000ノードをサポートさせたという事例が知られている。初心者の場合、最初は小規模なクラスタから始めるのが常道だが、その後は必要に応じて拡大させていけばいいだろう。後日、実際に導入した成功事例などを紹介していただければ幸いである。

Amit Kumar Sahaは、コンピュータサイエンスおよびエンジニアリングを専行するインド出身の学生で、Linuxやオープンソースソフトウェアを始め、主として初心者を対象としたテクニカル関連の記事を執筆する傍ら、オープンソース関連のドキュメント作成プロジェクトにも貢献者として参加している。


前のページへ 1|2       

Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ