mapreduce推测执行算法及原理
2)推测执行机制:
3)执行推测任务的前提条件
(3)开启推测执行参数设置。Hadoop2.7.2 mapred-site.xml文件中默认是打开的
<property>
<name>mapreduce.map.speculative</name>
<value>true</value>
<description>If true, then multiple instances of some map tasks
may be executed in parallel.</description>
</property>
<property>
<name>mapreduce.reduce.speculative</name>
<value>true</value>
<description>If true, then multiple instances of some reduce tasks may be executed in
parallel.</description>
</property>
4)不能启用推测执行机制情况
5)算法原理:
假设某一时刻,该任务T的执行任务为progress,则可通过一定的算法推测出该任务的最终完成时时刻estimateEndTime,另一方面,如果此刻为该任务启动一个备份任务,则可推断出它可能的完成时刻estimateEndTime;于是可得以下几个公式:
estimateEndTime = estimateRunTime + taskStartTime
推测执行完时刻(60s) = 推测运行时间(60s) + 任务启动时刻(0)
estimateRunTime = ( currentTimestamp - taskStartTime ) / progress
推测运行时间(60s) = (当前时刻(6) - 任务启动时刻(0) ) /任务运行比例(10%)
estimateEndTime = currentTimestamp + averageRunTime
备份任务推测完成时刻(16s) = 当前时刻(6s) + 运行完成任务的平均时间(10s)
以下几个公式:
estimateEndTime = estimateRunTime + taskStartTime
推测执行完时刻(60s) = 推测运行时间(60s) + 任务启动时刻(0)
estimateRunTime = ( currentTimestamp - taskStartTime ) / progress
推测运行时间(60s) = (当前时刻(6) - 任务启动时刻(0) ) /任务运行比例(10%)
estimateEndTime = currentTimestamp + averageRunTime
备份任务推测完成时刻(16s) = 当前时刻(6s) + 运行完成任务的平均时间(10s)
1.MR总是选择(‘estimateEndTime - estimateEndTime ’)差值最大的任务,并为之启动备份任务。
2.为了防止大量任务同时启动备份造成的资源浪费,MR为每个作业设置了同时启动的备份任务数目上限。
3.推测执行机制实际采用了经典的优化算法:以空间换时间,它同时启动多个相同任务处理相同的数据,并让这些任务竞争以缩短数据处理时间,很显然,这种方法需要占用更多的计算资源。在集群资源紧缺的情况下,应合理使用该机制,争取在多用少量资源的情况下,减少作业的计算时间