8

Amazon Elastic MapReduce ジョブで不適切な入力スキップを有効にしようとしています。ここで説明されている素晴らしいレシピに従っています。

http://devblog.factual.com/practical-hadoop-streaming-dealing-with-brittle-code

上記のリンクは、EMR ジョブで次の構成パラメーターを設定する必要があることを示しています。

mapred.skip.mode.enabled=true
mapred.skip.map.max.skip.records=1
mapred.skip.attempts.to.start.skipping=2
mapred.map.tasks=1000
mapred.map.max.attempts=10

Boto を使用して JobFlow でこれらの (およびその他の) mapred.XXX パラメータを設定するにはどうすればよいですか?

4

1 に答える 1

14

何時間も苦労し、コードを読み、実験した結果、答えは次のとおりです。

次のように、新しい BootstrapAction を追加する必要があります。

params = ['-s','mapred.skip.mode.enabled=true',
          '-s', 'mapred.skip.map.max.skip.records=1',
          '-s', 'mapred.skip.attempts.to.start.skipping=2',
          '-s', 'mapred.map.max.attempts=5',
          '-s', 'mapred.task.timeout=100000']
config_bootstrapper = BootstrapAction('Enable skip mode', 's3://elasticmapreduce/bootstrap-actions/configure-hadoop', params)

conn = EmrConnection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
step = StreamingStep(name='My Step', ...)
conn.run_jobflow(..., bootstrap_actions=[config_bootstrapper], steps=[step], ...)

もちろん、複数のブートストラップ アクションがある場合は、それを bootstrap_actions 配列に追加するだけです。

于 2012-08-22T10:48:48.697 に答える