MapReduce设置参数防止超时

1. 如果碰到异常“Task attempt failed to report status for xxx seconds. Killing!”,最可能是碰到死循环了。

2. 如果没有死循环:控制超时的属性是:mapred.task.timeout,默认600000ms,即600s。可以设置成更大的值。可以直接在Jobconf或Configuration中修改(只对本Job起作用),也可以修改mapred-site.xml(对所有Job起作用)。

3. 如果没有死循环,但task执行时间长又不好确定,可以在Reducer或Mapper中主动发送心跳,但需控制发送心跳的频率:

复制代码
    long heartBeatInterval = 100000L;            //主动发心跳的间隔,100s,默认600s超时
    long lastProgressTS = 0;                     //上一次发心跳的时间点
        
    //主动发心跳
    if (System.currentTimeMillis() - lastProgressTS > heartBeatInterval) {
        context.progress();
        lastProgressTS = System.currentTimeMillis();
    }
复制代码

4. 再次,如果对自己的程序有信心不会出现死循环,可以采用更简单的办法:

conf.set("mapred.task.timeout", "0");                        //不检查超时

 

 

 
 
标签:  MapReduceHadoop超时Timeout
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值