2

EC2/S3/EMR/R を使用して何かを正常に実行することを期待して、この例に従っています。 https://gist.github.com/406824

ストリーミング ステップでジョブが失敗します。エラーログは次のとおりです。

コントローラ:

2011-07-21T19:14:27.711Z INFO Fetching jar file.
2011-07-21T19:14:30.380Z INFO Working dir /mnt/var/lib/hadoop/steps/1
2011-07-21T19:14:30.380Z INFO Executing /usr/lib/jvm/java-6-sun/bin/java -cp /home/hadoop/conf:  /usr/lib/jvm/java-6-sun/lib/tools.jar:/home/hadoop:/home/hadoop/hadoop-0.20-core.jar:/home/hadoop/hadoop-0.20-tools.jar:/home/hadoop/lib/*:/home/hadoop/lib/jetty-ext/* -Xmx1000m -Dhadoop.log.dir=/mnt/var/log/hadoop/steps/1 -Dhadoop.log.file=syslog -Dhadoop.home.dir=/home/hadoop -Dhadoop.id.str=hadoop -Dhadoop.root.logger=INFO,DRFA -Djava.io.tmpdir=/mnt/var/lib/hadoop/steps/1/tmp -Djava.library.path=/home/hadoop/lib/native/Linux-i386-32 org.apache.hadoop.util.RunJar /home/hadoop/contrib/streaming/hadoop-streaming.jar -cacheFile s3n://emrexample21/calculatePiFunction.R#calculatePiFunction.R -input s3n://emrexample21/numberList.txt -output s3n://emrout/ -mapper s3n://emrexample21/mapper.R -reducer s3n://emrexample21/reducer.R
2011-07-21T19:16:12.057Z INFO Execution ended with ret val 1
2011-07-21T19:16:12.057Z WARN Step failed with bad retval
2011-07-21T19:16:14.185Z INFO Step created jobs: job_201107211913_0001

標準エラー:

Streaming Command Failed!

標準出力:

packageJobJar: [/mnt/var/lib/hadoop/tmp/hadoop-unjar2368654264051498521/] [] /mnt/var/lib/hadoop/steps/2/tmp/streamjob1658200878131882888.jar tmpDir=null

シスログ:

2011-07-21 19:50:29,539 INFO org.apache.hadoop.mapred.JobClient (main): Default number of map tasks: 2
2011-07-21 19:50:29,539 INFO org.apache.hadoop.mapred.JobClient (main): Default number of reduce tasks: 15
2011-07-21 19:50:31,988 INFO com.hadoop.compression.lzo.GPLNativeCodeLoader (main): Loaded native gpl library
2011-07-21 19:50:31,999 INFO com.hadoop.compression.lzo.LzoCodec (main): Successfully loaded & initialized native-lzo library [hadoop-lzo rev 2334756312e0012cac793f12f4151bdaa1b4b1bb]
2011-07-21 19:50:33,040 INFO org.apache.hadoop.mapred.FileInputFormat (main): Total input paths to process : 1
2011-07-21 19:50:35,375 INFO org.apache.hadoop.streaming.StreamJob (main): getLocalDirs(): [/mnt/var/lib/hadoop/mapred]
2011-07-21 19:50:35,375 INFO org.apache.hadoop.streaming.StreamJob (main): Running job: job_201107211948_0001
2011-07-21 19:50:35,375 INFO org.apache.hadoop.streaming.StreamJob (main): To kill this job, run:
2011-07-21 19:50:35,375 INFO org.apache.hadoop.streaming.StreamJob (main): UNDEF/bin/hadoop job  -Dmapred.job.tracker=ip-10-203-50-161.ec2.internal:9001 -kill job_201107211948_0001
2011-07-21 19:50:35,376 INFO org.apache.hadoop.streaming.StreamJob (main): Tracking URL: http://ip-10-203-50-161.ec2.internal:9100/jobdetails.jsp?jobid=job_201107211948_0001
2011-07-21 19:50:36,566 INFO org.apache.hadoop.streaming.StreamJob (main):  map 0%  reduce 0%
2011-07-21 19:50:57,778 INFO org.apache.hadoop.streaming.StreamJob (main):  map 50%  reduce 0%
2011-07-21 19:51:09,839 INFO org.apache.hadoop.streaming.StreamJob (main):  map 100%  reduce 0%
2011-07-21 19:51:12,852 INFO org.apache.hadoop.streaming.StreamJob (main):  map 100%  reduce 1%
2011-07-21 19:51:15,864 INFO org.apache.hadoop.streaming.StreamJob (main):  map 100%  reduce 3%
2011-07-21 19:51:18,875 INFO org.apache.hadoop.streaming.StreamJob (main):  map 100%  reduce 0%
2011-07-21 19:52:12,454 INFO org.apache.hadoop.streaming.StreamJob (main):  map 100%  reduce 100%
2011-07-21 19:52:12,455 INFO org.apache.hadoop.streaming.StreamJob (main): To kill this job, run:
2011-07-21 19:52:12,455 INFO org.apache.hadoop.streaming.StreamJob (main): UNDEF/bin/hadoop job  -Dmapred.job.tracker=ip-10-203-50-161.ec2.internal:9001 -kill job_201107211948_0001
2011-07-21 19:52:12,456 INFO org.apache.hadoop.streaming.StreamJob (main): Tracking URL: http://ip-10-203-50-161.ec2.internal:9100/jobdetails.jsp?jobid=job_201107211948_0001
2011-07-21 19:52:12,456 ERROR org.apache.hadoop.streaming.StreamJob (main): Job not Successful!
2011-07-21 19:52:12,456 INFO org.apache.hadoop.streaming.StreamJob (main): killJob...
4

1 に答える 1

6

私はあなたが実行しようとしているコードの作成者です。R と EMR に関する概念実証として書かれています。その方法を使って本当に役に立つコードを作るのは非常に困難です。R コードを EMR に送信し、そのメソッドが適切に機能するために必要なすべての手動手順を実行するのは、面倒な作業です。

退屈な作業を回避するために、私は後でSegue パッケージを作成しました。このパッケージは、S3 へのすべてのビットのロードと、Hadoop ノードでの R バージョンの更新を抽象化します。Jeffry Breen は、Segue の使用に関するブログ投稿を書きました。それを見て、使いやすいかどうかを確認してください。

編集:

EMR/Hadoop ストリーミングでの R コードのデバッグについて、少なくともいくつかのヒントを提供する必要があります。

1) Hadoop ログから R コードをデバッグすることは、ほぼ不可能です。私の経験では、EMR クラスターをセットアップしてログインし、R 内から手動でコードを実行する必要があります。これには、キーを定義してクラスターを起動する必要があります。私は通常、デバッグ用に単一ノード クラスタでこれを行い、非常に小さなデータ セットを使用します。デバッグするためだけに複数のノードを実行する意味はありません。

2) EMR ノードの R 内でインタラクティブにジョブを実行するには、Hadoop ノードの /home/hadoop/ ディレクトリに入力ファイルが必要です。これを行う最も簡単な方法は、クラスターまでに必要なすべてのファイルを scp することです。

3) 1 と 2 を実行する前に、同じ方法を使用してコードをローカルでテストします。

4) R コードが機能することを確認したら、Hadoop マシンでこれを実行できるはずです。

cat numberList.txt | ./mapper.R | sort | ./reducer.R

実行する必要があります。マッパーまたはリデューサーを使用していない場合は、cat に置き換えることができます。この例では numberList.txt を使用しています。これは、github の私のコードでは入力ファイル名であるためです。

于 2011-07-21T20:48:42.713 に答える