Hadoop Speculative Task

在分布式计算环境中,一个job会被拆解为多个task,由于各种软硬件异常,某些task运行速度较慢,拖慢了整个job完成时间
对于这些运行速度较慢的task,Hadoop不会尝试诊断或者修复,而是分析出哪些task运行较慢,针对这些运行较慢的task,启动一些backup的task,我们称之为speculative task,speculative task会与原有task一起运行,哪个task首先执行结束,则使用这个task的结果作为整个job的输出

speculative task并不是在job启动的时候随着task启动,而是在整个job运行一段时间后,判断哪些task落后于整体进度,针对这些task启动speculative task,具体算法参考“Hadoop中Speculative Task 调度策略”

speculative task是一种优化手段,而不是提高任务可靠性的手段,speculative task不能解决程序或者数据本身引发的问题。

在某些情况下,speculative task可以减少任务的运行时间,但是,在集群较忙碌时,speculative task会导致集群throughput下降。
此外,当任务需要和一些外部storage交互时,例如Hbase,启用speculative task会给外部storage带来额外压力,在有修改/更新操作时,有可能导致数据异常。


MapReduce任务有两个参数可以控制Speculative Task:

mapred.map.tasks.speculative.execution: mapper阶段是否开启推测执行
mapred.reduce.tasks.speculative.execution: reducer阶段是否开启推测执行

这两个参数默认都为true

java 应用可以通过如下语句关闭speculative task:

conf.setBoolean("mapred.map.tasks.speculative.execution", false);
conf.setBoolean("mapred.reduce.tasks.speculative.execution", false);


Reference:
Speculative Execution
Hadoop中Speculative Task 调度策略

转载于:https://my.oschina.net/zipu888/blog/549717

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值