hive推测执行(speculative execution)

前几天在解决同事一个Hive Bug的时候,需要关闭task推测执行(speculative execution),

在网上查了资料后有人提到需要

set hive.mapred.map.tasks.speculative.execution=false

set hive.mapred.reduce.tasks.speculative.execution=false

但是执行后发现job 还是启动speculative task,有点奇怪,明明设置了啊。

找到hive对应的代码,发现只有hive.mapred.reduce.tasks.speculative.execution参数,没有hive框架对应的设置map task推测执行开关选项。

而这个Job恰恰是map-only job,没有reducer,所以上述两个参数设置后,没有效果。

其实speculative execution是属于mapreduce框架的属性

在JobConf中就有mapred.map.tasks.speculative.execution和mapred.reduce.tasks.speculative.execution

hive在组装JobConf的时候也是拿到hive.mapred.reduce.tasks.speculative.execution值然后set到mapred.reduce.tasks.speculative.execution中去的


搞清楚原因后,设置mapred.map.tasks.speculative.execution,mapred.reduce.tasks.speculative.execution 为false,就可以解决问题

set mapred.map.tasks.speculative.execution=false;

set mapred.reduce.tasks.speculative.execution=false;

hive推测执行(speculative execution)_第1张图片


本文链接http://blog.csdn.net/lalaguozhe/article/details/9077251,转载请注明


你可能感兴趣的:(Hive,hadoop)