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