過去に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