hadoop スクリプト
設定ファイルを書いて HDFS なソレのフォーマットをしようとしたら以下なメセジを吐いて終了。
$ /usr/local/hadoop/bin/hadoop namenode -format /usr/local/hadoop/bin/hadoop: line 258: /usr/lib/java-1.6.0-openjdk/bin/java: No such file or directory /usr/local/hadoop/bin/hadoop: line 289: /usr/lib/java-1.6.0-openjdk/bin/java: No such file or directory $
む、これどーゆーことなのかな。中身を確認。
以下な記述があるな。
JAVA=$JAVA_HOME/bin/java
ええと JAVA_HOME はというと
$ echo $JAVA_HOME /usr/lib/jvm/java-1.6.0-openjdk $
よく分からんな。もっかい hadoop なスクリプトの中身を確認。258 行な記述が以下。
JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`
とりあえず $JAVA_HOME/bin には java がいるので hadoop なスクリプトがどうやって $JAVA を組み立てているか、が鍵なのか。
意味分からないので $JAVA_HOME を echo してみます。
# some Java parameters if [ "$JAVA_HOME" != "" ]; then echo "run java in $JAVA_HOME" JAVA_HOME=$JAVA_HOME fi
出力は以下。
run java in /usr/lib/java-1.6.0-openjdk
うーん何が悪さをしてるのか。と言いつつ hadoop なスクリプト確認してたら /usr/local/hadoop/conf/hadoop-env.sh を読み込んでいる箇所を発見。ありました。
export JAVA_HOME=/usr/lib/java-1.6.0-openjdk
おいおい。やっぱり自分か。なんでこんなことしてるのかorz
コメントアウトしたら動いた、のかな。なんとなくパス確認せずに既存な記述をコピッて云々な記憶あり。阿呆は死なぬと直らぬ模様です。