0

私は、elastic-mapreduce Ruby ライブラリを使用してジョブ フローを開始することができました。これで、ジョブが終了した後もまだ「生きている」インスタンスがあります。SSH を使用してログインし、別のジョブを開始したいのですが、hadoop が入力ファイルを見つけられないため、さまざまな試行が失敗しました。入力ファイルをローカルと S3 に保存しようとしました。

SSH セッション内から直接新しい Hadoop ジョブを作成するにはどうすればよいですか?

私の試みからのエラー:

(SFTP を使用してファイルをアップロードして作成したローカル ファイル ストレージを使用する最初の試み)

hadoop jar hadoop-0.20-streaming.jar \
-input /home/hadoop/mystic/search_sets/test_sample.txt \
-output /home/hadoop/mystic/search_sets/test_sample_output.txt \
-mapper /home/hadoop/mystic/ctmp1_mapper.py \
-reducer /home/hadoop/mystic/ctmp1_reducer.py \
-file /home/hadoop/mystic/ctmp1_mapper.py \
-file /home/hadoop/mystic/ctmp1_reducer.py

11/10/04 22:33:57 ERROR streaming.StreamJob: Error Launching job :Input path does not exist: hdfs://ip-xx-xxx-xxx-xxx.us-west-1.compute.internal:9000/home/hadoop/mystic/search_sets/test_sample.txt

(s3 を使用した 2 回目の試行):

hadoop jar hadoop-0.20-streaming.jar \
-input s3n://xxxbucket1/test_sample.txt \
-output /home/hadoop/mystic/search_sets/test_sample_output.txt \
-mapper /home/hadoop/mystic/ctmp1_mapper.py \
-reducer /home/hadoop/mystic/ctmp1_reducer.py \
-file /home/hadoop/mystic/ctmp1_mapper.py \
-file /home/hadoop/mystic/ctmp1_reducer.py

11/10/04 22:26:45 ERROR streaming.StreamJob: Error Launching job : Input path does not exist: s3n://xxxbucket1/test_sample.txt
4

1 に答える 1

2

最初のものは機能しません。Hadoop は、ローカル ストレージではなく、HDFS でその場所を探します。次のようにプレフィックスを使用すると機能する場合がありますfile://

-input file:///home/hadoop/mystic/search_sets/test_sample.txt

ただし、ストリーミング入力でこれを試したことはありません。機能したとしても、おそらく最良のアイデアではありません。

2 番目 (S3) が機能するはずです。私たちはこれを常に行っています。ファイルが実際に存在することを確認します。

hadoop dfs -ls s3n://xxxbucket1/test_sample.txt

または、ファイルを HDFS に入れて、通常どおり使用することもできます。ただし、EMR のジョブの場合、通常は S3 が最も便利だと思います。

于 2011-10-05T15:37:51.673 に答える