HiveServer2的0.13版本存在一个bug,会导致该机器上的ZK连接数超过定义上限,详细可见HIVE-8596描述。在我们的线上集群中,因为这个bug导致了一个有意思的故障。
线上YARN集群版本为Hadoop2.5.0-cdh5.2.0,包含7个NodeManger节点,假设为host1——host7。相关配置:可分配给容器的物理内存数量(yarn.nodemanager.resource.memory-mb)为8G,Reduce任务内存(mapreduce.reduce.memory.mb)为2G。host1上部署了HiveServer2,并且出现了HIVE-8596的bug。Reduce任务前要完成的Map任务数量(mapreduce.job.reduce.slowstart.completedmaps)为0.8.Mapreduce任务超时(mapreduce.task.timeout)为10分钟。
在06:09:54时,Application-A开始运行,其包括50个Map任务和28个reduce任务,Map中需要连接ZK。有5个Map任务分配到host1上,其余45个分配到host2——host7上。
至06:10:14时,host2——host7上的45个Map任务全部完成。不幸的是,由于HIVE-8596的缘故,host1上的任务第一次尝试全部失败,所以10分钟(mapreduce.task.timeout)后会抛出超时错误,并且准备尝试第二次,此时大约为06:20。悲催的是ÿ