Python:使用yelps MRJOB增加EMR中的超时值
我正在使用yelpmrjob编写一些mapreduce程序。我在EMR上运行它。我的程序有reducer代码,需要很长时间才能执行。我注意到,由于EMR中的默认超时时间,我得到了这个错误Python:使用yelps MRJOB增加EMR中的超时值,python,hadoop,mapreduce,elastic-map-reduce,mrjob,Python,Hadoop,Mapreduce,Elastic Map Reduce,Mrjob,我正在使用yelpmrjob编写一些mapreduce程序。我在EMR上运行它。我的程序有reducer代码,需要很长时间才能执行。我注意到,由于EMR中的默认超时时间,我得到了这个错误 Task attempt_201301171501_0001_r_000000_0 failed to report status for 600 seconds.Killing! 我想要一种增加EMR超时的方法。我阅读了mrjobs的官方文件,但我无法理解程序。有人能提出一个解决这个问题的方法吗。我在过去处
Task attempt_201301171501_0001_r_000000_0 failed to report status for 600 seconds.Killing!
我想要一种增加EMR超时的方法。我阅读了mrjobs的官方文件,但我无法理解程序。有人能提出一个解决这个问题的方法吗。我在过去处理过一个与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
我在过去处理过一个与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…但现在我有了这个错误任务尝试\u 20130118006\u 0001\u r\u000000\u 0报告状态失败1802秒。杀人@ravijimagna嗯,我想你可以继续增加你的超时时间,这真的取决于你的任务是什么,1800秒听起来已经很多了,这是预期的行为吗?一点也不。当我在本地运行文件时,完成整个工作大约需要15分钟。EMR花费了太多的时间,两种情况下的代码完全相同。这方面有什么解决方案吗?我应该写在哪里???@ravijimagna我在答案中添加了更多细节。谢谢@Charles…但现在我有了这个错误任务尝试\u 20130118006\u 0001\u r\u000000\u 0在1802秒内报告状态失败。杀人@ravijimagna嗯,我想你可以继续增加你的超时时间,这真的取决于你的任务是什么,1800秒听起来已经很多了,这是预期的行为吗?一点也不。当我在本地运行文件时,完成整个工作大约需要15分钟。EMR花费了太多的时间,两种情况下的代码完全相同。这方面有什么解决办法吗?