Hadoopで疑似分散モード動かしたところまでのまとめ

Hadoop入れて動かしてみたところ、意外と簡単にstandaloneモードで動くところまで持って行けて驚いたのもつかの間、疑似分散モードで動かそうとしたらしたたかにハマってしまった。ハマりから抜け出す途中でHadoopがまだまだ0.20という正式版の出ていないバージョンであるということを強く認識したので、その軌跡をちょっと残しておくよ。

インストール

基本的には、

  1. SunのJREをインストールする
    • FreeBSDの場合、portsdiablo-jdkが楽(Sunのページで同意とダウンロードは必要)
    • CentOSの場合、Sunの配布しているrpmが楽(以下同文)
  2. hadoop-coreを公式ページからダウンロード
  3. hadoop-coreを適当なディレクトリに展開
  4. 環境変数JAVA_HOMEを適切に設定

スタンドアロン実行

conf/hadoop-env.sh以外のconfファイルをいじらない状態で、おもむろに

> cd ${HADOOP_HOME}
> bin/hadoop jar hadoop-0.20.2-examples.jar pi 10 100000

などとやる。動いて結果が3.1415520000000とか出てきたら、成功。あなたは既にHadoopを動かしている。

擬似分散モード

三つの設定ファイルを設定すればOK。

conf/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://XXX.XXX.XXX.XXX:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop/datanode/${user.name}</value>
  </property>
</configuration>
conf/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>
conf/mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>XXX.XXX.XXX.XXX:9001</value>
  </property>
</configuration>

hadoop.tmp.dir要素は書かなくてもいい。ただし、その場合は/tmp/hadoop-${user.name}/以下にテンポラリのデータが置かれるので、/tmpを細かく切っている場合にはわりと危ない。私の場合、切り方失敗してて1GByteしかなかったので、200GBくらいある/usr以下に移しておいた。
fs.default.name要素とmapred.job.tracker要素は外向きIPアドレスを入れてる。QuickStartではlocalhostとしていたものの、不思議と失敗するので試しにIPv4アドレス直打ちに変えてみたら何故か成功した。127.0.0.1などでも良いかも知れない。
悲しいことに、v6アドレスには非対応なので、その点は注意。そういえばブラウザのアドレスバーへの入力みたく[]でくくってなかったけど、くくったら対応したのかな。要チェック。

以上の編集を行ったのち、実行する。

> bin/hadoop namenode -format
> bin/start-all.sh

http://localhost:50070 に接続してみて、dfshealth.jspへリダイレクトされるか確認。Cluster SummaryにてLive Nodesが1となっていたら状況良好。アクセス失敗しているようなら何かダメ。
http://localhost:50030 に接続してみて、jobtracker.jspへリダイレクトされるか確認。Cluster SummaryにてNodesが1となっていたら状況良好。ここが全てゼロになってたら何かダメ。



そんな感じでなんか擬似分散モードが動いて幸せな気持ちに浸っている。次は完全分散モードなので、各種設定ファイルの設定項目を理解するところから始める。インストール用のコンピュータは既に準備してあるもんね。