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

编辑:似乎某些 EMR AMI 似乎不支持在运行时使用 jobconf 设置超时等参数。相反,您必须像这样使用引导时配置:

--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 回答