クラウドコンピューティングにまつわる話をつれづれなるままに。。。

2009年6月2日火曜日

Hadoop 0.19.1インストール

今、Hadoopのページを見ると、0.18.3、0.19.1、0.20.0の三つのリリースが存在する。最新版を追っかける気もしないので、0.19.1あたりを試すことにする。Release notesなどを眺めると0.19.0でappendに対応したけど、0.19.1で無効に戻したとかある。データが消えてしまう深刻なバグがあるので0.19.0は使ってはいけないようだ。あと、0.20になるとconfiguration file (hadoop-site.xmlとか)が複数ファイルに分割されたりと変更されている。

さて、早速インストール。実験環境は8ノードのPCクラスタ(ホスト名はnode00-07)で、ホームディレクトリはNFSで共有され、SSHはホストベース認証が設定済み。JDK 1.6.0_13。環境変数JAVA_HOMEは別途.zshenvで設定済みなので、conf/hadoop-env.shはいじらない。

以下は、クラスタ環境での設定メモ。

設定ファイルはconfディレクトリ以下に存在し、サイトごとの設定はhadoop-site.xmlで行う。


conf/hadoop-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://node00:54310</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>node00:54311</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>


マスターノードとスレーブノードはそれぞれ以下のファイルにホスト名を列挙しておく。


conf/masters:
node00

conf/slaves:
node00
node01
node02
node03
node04
node05
node06
node07


HDFSのフォーマット


$ bin/hadoop namenode -format


Hadoopの起動


$ bin/start-all.sh


念のため、jpsコマンドでマスターノードにJobTrackerとNameNode(とSecondaryNameNode)、スレーブノードにTaskTrackerとDataNodeが起動していることを確認する。

Hadoopの終了


$ bin/stop-all.sh


MapReduceの実行

Quick Startの例を実行してみる。まずはconfディレクトリの内容をHDFSにコピーする。


$ bin/hadoop fs -put conf input


サンプルのgrepを実行。HDFS上のinputからファイルを読み込み、結果をoutputに出力する。


$ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'


出力をローカルファイルに出力する。


$ bin/hadoop fs -get output output


蛇足だけど、httpdにはJettyを使っている。

0 件のコメント:

コメントを投稿