我正在使用yelpmrjob编写一些mapreduce程序。我在电子病历上查。我的程序有需要很长时间才能执行的代码。我注意到由于emr中的默认超时时间,我得到了这个错误
Task attempt_201301171501_0001_r_000000_0 failed to report status for 600 seconds.Killing!
我想要一种增加电子病历超时时间的方法。我阅读了mrjobs的官方文件,但我无法理解程序。有人能提出解决这个问题的办法吗。
vxf3dgd41#
我曾经处理过类似的问题,与emr在过去,你正在寻找的财产 mapred.task.timeout 如果任务既不读取输入,也不写入输出,也不更新其状态字符串,则任务终止前的毫秒数。使用mrjob,可以添加以下选项:
mapred.task.timeout
--jobconf mapred.task.timeout=1800000
编辑:似乎有些emr ami不支持在运行时使用jobconf设置超时等参数。相反,您必须使用如下引导时间配置:
--bootstrap-action="s3://elasticmapreduce/bootstrap-actions/configure-hadoop -m mapred.task.timeout=1800000"
我仍然会尝试从第一个开始,看看是否可以让它工作,否则尝试引导操作。要运行这些参数中的任何一个,只需从 MRJob ,该类具有 jobconf 方法来读取 --jobconf 参数,因此应在命令行上将这些参数指定为常规选项:
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
1条答案
按热度按时间vxf3dgd41#
我曾经处理过类似的问题,与emr在过去,你正在寻找的财产
mapred.task.timeout
如果任务既不读取输入,也不写入输出,也不更新其状态字符串,则任务终止前的毫秒数。使用mrjob,可以添加以下选项:
编辑:似乎有些emr ami不支持在运行时使用jobconf设置超时等参数。相反,您必须使用如下引导时间配置:
我仍然会尝试从第一个开始,看看是否可以让它工作,否则尝试引导操作。
要运行这些参数中的任何一个,只需从
MRJob
,该类具有jobconf
方法来读取--jobconf
参数,因此应在命令行上将这些参数指定为常规选项: