【问题标题】:Python: Increasing timeout value in EMR using yelps MRJOBPython:使用 yelps MRJOB 增加 EMR 中的超时值
【发布时间】:2013-01-17 15:25:49
【问题描述】:

我正在使用 yelp MRjob 来编写一些 mapreduce 程序。我在 EMR 上运行它。我的程序有减速器代码,需要很长时间才能执行。我注意到由于 EMR 中的默认超时期限,我收到此错误

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

我想要一种方法来增加 EMR 的超时时间。我阅读了同样的 mrjobs 官方文档,但我无法理解该过程。有人可以提出解决此问题的方法吗?

【问题讨论】:

    标签: python hadoop mapreduce elastic-map-reduce mrjob


    【解决方案1】:

    我过去处理过与 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
    

    【讨论】:

    • 我应该在哪里写这个??
    • @ravijimagna 我在答案中添加了更多细节。
    • 谢谢@Charles ...但现在我有这个错误任务尝试_201301180606_0001_r_000000_0 未能报告状态 1802 秒。杀戮!
    • @ravijimagna 好吧,我想您可以继续增加超时时间,这实际上取决于您的任务,1800 秒听起来已经很多了,这是预期的行为吗?
    • 一点也不。当我在本地运行文件时,完成整个工作大约需要 15 分钟。 EMR 花费了太多时间,而且两种情况下的代码完全相同。有这方面的解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多