1

Amazon の EMR で Java Map/Reduce (M/R) ジョブを実行する方法を学習しようとしています。私がフォローしているドキュメントはこちらhttp://aws.amazon.com/articles/3938です。私はWindows 7コンピューターを使用しています。

このコマンドを実行しようとすると、ヘルプ情報が表示されます。

./elasticmapreduce-client.rb RunJobFlow streaming_jobflow.json 

もちろん、私は Windows マシンを使用しているので、実際にこのコマンドを入力します。理由はわかりませんが、この特定のコマンドについては、Windows バージョンがありませんでした (すべてのコマンドはペアで表示され、1 つは *nix 用で、もう 1 つは Windows 用です)。

 ruby elastic-mapreduce RunJobFlow my_job.json

私の質問は、コマンド ライン インターフェイス (Windows 上) を使用して、Windows から Amazon の EMR にジョブを送信/実行する方法です。オンラインで検索してみましたが、野生の場所に連れて行かれます。どんな助けでも大歓迎です。

ありがとう。

4

3 に答える 3

1

うーん。RunJobFlow の例がどれくらい古いかはわかりません...個人的には無視します。

あなたは走ることができますか?

localhost$ elastic-mapreduce --describe

できるようになったら、クラスターで直接プレイして、実行する必要がある正確な手順を実行する必要があります...これを行う価値があるので、クラスターを何億回も開始/停止する必要はありません。

localhost$ elastic-mapreduce --create --alive --num-instances 1
localhost$ elastic-mapreduce -j j-YOUR_ID_HERE --ssh

cluster$ hadoop jar my.jar -D some=1 -D args=1 blah blah
cluster$ hadoop jar some_other_jar.jar -D foo -D bar
cluster$ ^D

localhost$ elastic-mapreduce -j j-YOUR_ID_HERE --terminate

次に、手順に満足し、ヘッドレスで実行する必要がある場合 (たとえば、cron から)、EMR に手順を調整させることができます (最後にクラスターの自己終了を含む)。

localhost$ elastic-mapreduce --create --num-instances 1
localhost$ elastic-mapreduce --jar my_jar.jar --args "-D,some=1,-D,args=1,blah,blah"
localhost$ elastic-mapreduce --jar some_other_jar.jar --args "-D,foo,-D,bar"

より複雑な手順が必要な場合にのみ、 --json の内容を調べます。少し不可解で、最初は正しく理解するのが難しいです...

于 2012-03-14T23:43:40.217 に答える
1

--json オプションを使用してみてください。

例えば ./elastic-mapreduce --create --name Multisteps --json wordcount_jobflow.json

ステップのみでjsonファイルをトリミングする必要があります([]の外側をすべて削除します)。それについて議論しているスレッドがあります: https://forums.aws.amazon.com/thread.jspa?threadID=35093

于 2012-06-21T23:21:15.670 に答える
1

EMR でストリーミング ジョブを実行するには、まず次のようなコマンドでクラスターを作成する必要があります。

ruby elastic-mapreduce --create --alive --plain-output --master-instance-type m1.xlarge 
--slave-instance-type m1.xlarge --num-instances 6  --name "Some Job Cluster" --bootstrap-action s3://<path-to-a-bootstrap-script> 

これは次のようなジョブ ID を返します: j-ABCD7EF763

これで、次のコマンドでジョブ ステップを送信できます。

ruby elastic-mapreduce -j j-ABCD7EF763 --stream --step-name "my step name" --mapper
s3://<some-path>/mapper-script.rb --reducer s3://<some=path>/reducer-script.rb --input 
s3://<input-path> --output s3://<output-path> 

ストリーミング ジョブを実行する代わりに、ジョブを直接実行することもできます。この場合、ジョブが終了すると、クラスターは自動的に終了します。

于 2012-06-19T21:18:34.490 に答える