2011-07-22 1 views
0

ストリーミングのHadoopでJavaクラスファイルを実行することはできません:

java.io.IOException: Cannot run program "MapperTst.class": java.io.IOException: error=2, No such file or directory

私はターミナルで以下のコマンドを実行しました:

[email protected]:/usr/local/hadoop$ bin/hadoop jar contrib/streaming/hadoop-streaming-0.20.203.0.jar -file /home/hadoop/codes/MapperTst.class -mapper /home/hadoop/codes/MapperTst.class -file /home/hadoop/codes/ReducerTst.class -reducer /home/hadoop/codes/ReducerTst.class -input gutenberg/* -output gutenberg-outputtstch27 

答えて

3

ホーム/ Hadoopの/言うcodes.MapperTest(パッケージを含む)あなたの完全修飾マッパーのクラス名をされたと仮定し、減速のクラス名は、

パッケージあなたの地図codes.ReducerTstで、jarファイルにクラスを減らします/ test.jar あなたのコマンドでは、あなたがそれを変更した場合に動作するはずです:

 
[email protected]:/usr/local/hadoop$ bin/hadoop jar \ 
    contrib/streaming/hadoop-streaming-0.20.203.0.jar \ 
    -libjars /home/hadoop/test.jar \ 
    -mapper codes.MapperTst \ 
    -reducer codes.ReducerTst \ 
    -input gutenberg/* -output gutenberg-outputtstch27 
-2

ストリーミングはJavaクラスでは動作しません。これは、Linuxのコマンドとして扱うことができるものを実行することになっています。入力データは入力ストリームに供給され、出力はマッパー出力として扱われます。 既にJavaでmapperクラスを使用している場合は、ストリーミングは必要ありません。

1

私は同じ問題を抱えていました。解決策は、指定されたパッケージにjavaマッパー/レデューサー/コンバイナーを配置することでした。デフォルトのパッケージでは動作しません。それはあなたが持っていたエラーを与えるでしょう。