1

私は yelp MRjob を使用して、いくつかの mapreduce プログラムを作成しています。EMRで実行しています。私のプログラムには、実行に時間がかかるレデューサー コードがあります。EMR のデフォルトのタイムアウト期間が原因で、このエラーが発生していることに気付きました

Task attempt_201301171501_0001_r_000000_0 failed to report status for 600 seconds.Killing!

EMR のタイムアウトを増やす方法が必要です。同じことについてmrjobsの公式ドキュメントを読みましたが、手順を理解できませんでした。誰かがこの問題を解決する方法を提案できますか?

4

1 に答える 1

4

過去にEMRで同様の問題を扱ったことがあります。探しているプロパティは、タスクが入力の読み取り、出力の書き込み、ステータス文字列の更新のいずれも行わない場合にタスクが終了するまでのミリ秒数にmapred.task.timeout対応します。

MRJob を使用すると、次のオプションを追加できます。

--jobconf mapred.task.timeout=1800000

EDIT : 一部の EMR AMI は、実行時の jobconf でのタイムアウトなどのパラメータの設定をサポートしていないようです。代わりに、次のように Bootstrap-time 構成を使用する必要があります。

--bootstrap-action="s3://elasticmapreduce/bootstrap-actions/configure-hadoop -m mapred.task.timeout=1800000"

最初のものから始めて、それが機能するかどうかを確認します。そうでない場合は、ブートストラップ アクションを試します。

これらのパラメーターのいずれかを実行するには、 から拡張するジョブを作成するだけですMRJob。このクラスには、パラメーターjobconfを読み取るメソッドがある--jobconfため、これらをコマンド ラインで通常のオプションとして指定する必要があります。

python job.py --num-ec2-instances 42 --python-archive t.tar.gz -r emr --jobconf mapred.task.timeout=1800000 /path/to/input.txt
于 2013-01-17T16:18:14.283 に答える