Hadoop --- 推测执行Speculative Execution

问题

 MapReduce模型将一个作业分解为多个任务并行执行,以缩短执行时间。这种模型的特点是,整个作业的运行时间由最后完成的一个任务决定。如果少数任务运行缓慢,则会影响作业的整体进度。

推测执行

 任务运行缓慢的原因有很多,很难检测到具体原因。Hadoop提供了一种优化措施,当检测到某个任务运行缓慢时,Hadoop会启动另一个与该任务完全相同的任务,并最终选用最先成功运行完成任务的计算结果作为最终结果。

适用场景

 集群机器处理能力存在明显差异时,比如某台机器硬件老化、负载过高,或者Docker机所在的宿主机超卖严重等等。实际上,集群规模越大,这些情况出现的概率会越大。

不适用场景

  1. 任务之间存在固有的不均衡特点,比如数据倾斜等;
  2. Map/Reduce任务处理逻辑非幂等;

配置参数

  推测执行可以配置为集群维度的,也可以配置为作业或者Map/Reduce维度的。实际生产中,建议集群维度开启推测执行。需要注意的是,当推测执行的任务过多时会影响整个集群的吞吐量。个人建议,有自研能力的功能不妨可以尝试针对作业的优先级设置是否开启推测执行,而不是整个集群。
在这里插入图片描述

检测策略

  某个任务的运行时间超过整个作业的平均运行时间某个阈值,并且该任务自身运行时间超过某个阈值。

参考:

  1. https://zhuanlan.zhihu.com/p/22348162
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值