osxでHadoopのNameNodeが起動しない

macbookにHadoopを入れたのだけどきちんと起動してない。jpsで見てみるとNameNodeが起動していないことが原因のようだった。

ログを見てみると、設定ファイルに記述したlocalhostじゃなくてマシン名+".local"(hostnameで表示される文字列)で立ち上げようとしてた。理由は良くわからんがとりあえず設定ファイルをこちらの名前で書き直す。

さらに、パスワードなしsshアクセスできるように.ssh/authorized_keysに追加しておく。

ProductName Hadoop
Tom White
オライリージャパン / 4830円 ( 2010-01-25 )



これでうまくうごいたので、早速HadoopStreamingをやってみる。サンプルコードはHadoop Streaming - naoyaのはてなダイアリーから。

$ hadoop jar hadoop-0.20.2/contrib/streaming/hadoop-0.20.2-streaming.jar \
-input log.txt -output log.out -mapper map.pl -reducer reduce.pl
...
11/04/21 05:21:24 INFO streaming.StreamJob:  map 100%  reduce 0%
11/04/21 05:21:33 INFO streaming.StreamJob:  map 100%  reduce 100%
11/04/21 05:21:36 INFO streaming.StreamJob: Job complete: job_201104202054_0004
11/04/21 05:21:36 INFO streaming.StreamJob: Output: log.out

OKっぽいのでアウトプットを見てみる

$ hadoop fs -cat log.out/part-00000
403 3
304 3786
206 2
400 11
313 14
200 49190
302 48
301 223
404 2476

あとは擬似分散環境じゃなくてちゃんとした分散環境を構築すればいいですね。

バーチャルで化合物つくると組み合わせ爆発おこしてその先のハンドリングに難儀するのでchemoinformaticsでもMapReduceうまく使えないかなと思っているわけです。

参考

macbookにHadoopを入れた

オライリーの本みながら0.21.0使うとはまるので、0.20.2を入れる。

conf/hadoop-env.shのJAVA_HOMEを設定

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home

動作確認でバージョンを表示させてみる。

$ hadoop-0.20.2/bin/hadoop version
Hadoop 0.20.2
Subversion https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707
Compiled by chrisdo on Fri Feb 19 08:07:34 UTC 2010

ちゃんと動いてれば.bashrcに追加

export HADOOP_INSTALL=/Users/kzfm/hadoop-0.20.2
export PATH=$HADOOP_INSTALL/bin:$PATH

あとはHadoop本の通りに擬似分散モードで動かす。ちなみにmacbookでsshアクセスできるようにするには「システム環境設定」→「共有」→「リモートログイン」で。

ProductName Hadoop
Tom White
オライリージャパン / 4830円 ( 2010-01-25 )


hdfsを起動させるときには

$ hadoop namenode -format
$ start-dfs.sh
$ start-mapred.sh

hdfsを停止させるときには

$ stop-mapred.sh 
$ stop-dfs.sh