遇到的情况
我们在运行一个2T的hive数据进行动态分区,发现运行了很长时间的mapreduce在reduce运行过程中又重新启动了一次map。
如图
原因
分析到的原因可能有两个
一是有异常报错,reduce入库时一直失败,很多个fail或者kill,hadoop启用推测执行机制。hadoop针对慢或者老是失败的任务额外启动一个备份任务,一起处理同一份数据,哪个先执行完,则采用哪个的处理结果,同时将另外一个任务杀死。也就是说,推测执行是Hadoop对慢任务的一种优化机制(实际上就是“空间换时间”的经典优化思想),不属于容错调度范畴。可以通过参数调整禁止推测执行。
二是因为导致失败的原因未排除,重复执行任务,导致内存超出或者硬盘不足,节点挂掉。
我们看到图里就是250挂掉了,任务重新在217执行。所以很大原因是这个。