在作业执行的过程中数据倾斜发生的可能性是很大的,甚至有可能只有一个task执行到50%,但是其他task早早执行完毕了。
这就需要推测执行,hadoop的推测执行机制
会给这些有可能需要长时间才可以执行完的task准备一个备份,一旦task执行缓慢,那么备份task也会执行task的工作,看哪个先执行完就使用哪个的结果。
但是如果数据量过于庞大,备份task有可能直接打垮集群。
<property>
<name>hive.mapred.reduce.tasks.speculative.execution</name>
<value>true</value>
<description>
<!--是否启用还原器的推测执行。-->
Whether speculative execution for reducers shouldbe turned on.
</description>
</property>