2010年6月4日金曜日

6/4 Hadoopでのユーザアプリの実行

ユーザアプリはHadoop内のmapredに置かれているMapReduceBaseをインポートして作る。
packageは設定しないほうが楽だが、設定した場合は実行時にも影響する。

$HADOOP_HOMEをHadoopをインストールしたディレクトリで設定する。
これがないとうまく実行できない。

$HADOOP_HOMEにjavaファイルを置いてコンパイルする。
$ mkdir class_tmp
$ javac -classpath ${HADOOP_HOME}/hadoop-0.20.2-core.jar -d class_tmp SOURCE.java
$ jar -cvf JARNAME.jar -C class_tmp/ .

package hoge.foo.bar;
となっている場合は、SOURCE.javaの部分を./hoge/foo/bar/SOUECE.javaにする。

実行。
$ ${HADOOP_HOME}/bin/hadoop jar JARNAME.jar CLASSNAME ARG0 ARG1 ...

packageが指定してある場合は、CLASSNAMEをhoge.foo.bar.CLASSNAMEとする。
引数はjavaの設定に依存。


参考:ttp://www.unfindable.net/~yabuki/blog/2010/02/hadoop_1.html
今回は正しい情報に行き当たるまでにすさまじく多くの時間を無駄にしてしまった。
ショック。

0 件のコメント:

コメントを投稿