HiveServer2 ZooKeeper 链接泄漏

昨天线上ETLJob忽然挂起,查看Hive Log异常:java

[ERROR]:Utils - FAILED: Error in acquiring locks: Locks on the underlying objectscannot be acquired. retry after some timeapache

WARNunexpected error, closing socket connection and attempting reconnectjava.io.IOException: Connection reset by peersocket

一看是获取锁失败,关于Hive获取锁的流程简析:ide

http://boylook.blog.51cto.com/7934327/1308139ui

在看ZK发现从这台AgentZK的链接已经超过maxClientCnxns了,马上先把ZK增长问题获得缓解,而后开始找RCspa

出现问题的前一天修改了hive.lock.sleep.between.retries5s,是否是和这个有关系呢?每次ZKLockManagerretry前会执行prepareretry,主要是检查前一个zk链接是否超时,若是没有继续用这个链接不然new一个zk链接,所以问题不该该是这里.线程

再看出问题的Client上主要跑了ETL agenthiveserver2,发现链接都是从hiveserver2上来的,怀疑是否是由于默认的maxWorkerThreads略大了,不过workerzk的链接无关,只是决定了ThreadPoolExecutor的线程数,看hiveserver部分代码最终与ZK交互的执行层面是OperationHandle,进而就是你们都熟悉的Driver run方法了,到这里基本上才开始进行SQL的解析运行,包括锁的处理.server

210246344.png

而咱们使用的是CDH4.2.0,这里有一个OperationHandle 资源泄露进而致使到ZK链接泄漏的一个Bugblog

https://issues.cloudera.org/browse/DISTRO-512?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel#issue-tabs–> HIVE-4398,在Hive0.11已经修复资源

update:https://issues.apache.org/jira/browse/HIVE-5853

相关文章
相关标签/搜索