前几天在解决同事一个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;
本文链接http://blog.csdn.net/lalaguozhe/article/details/9077251,转载请注明