HiveServer2 ZooKeeper 连接泄漏
2013-10-26 21:03
507 查看
昨天线上ETLJob突然挂起,查看Hive Log异常:[ERROR]:Utils - FAILED: Error in acquiring locks: Locks on the underlying objectscannot be acquired. retry after some timeWARNunexpected error, closing socket connection and attempting reconnectjava.io.IOException: Connection reset by peer一看是获取锁失败,关于Hive获取锁的流程简析:http://boylook.blog.51cto.com/7934327/1308139在看ZK发现从这台Agent到ZK的连接已经超过maxClientCnxns了,立刻先把ZK增加问题得到缓解,然后开始找RC:出现问题的前一天修改了hive.lock.sleep.between.retries到5s,是不是和这个有关系呢?每次ZKLockManager在retry前会执行prepareretry,主要是检查前一个zk连接是否超时,如果没有继续用这个连接否则new一个zk连接,因此问题不应该是这里.再看出问题的Client上主要跑了ETL agent和hiveserver2,发现连接都是从hiveserver2上来的,怀疑是不是因为默认的maxWorkerThreads略大了,不过worker和zk的连接无关,只是决定了ThreadPoolExecutor的线程数,看hiveserver部分代码最终与ZK交互的执行层面是OperationHandle,进而就是大家都熟悉的Driver run方法了,到这里基本上才开始进行SQL的解析运行,包括锁的处理.
![](https://oscdn.geek-share.com/Uploads/Images/Content/201310/26/8caef98c4d30dd47281880a46b6f7952.png)
而我们使用的是CDH4.2.0,这里有一个OperationHandle 资源泄露进而导致到ZK连接泄漏的一个Bug: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
![](https://oscdn.geek-share.com/Uploads/Images/Content/201310/26/8caef98c4d30dd47281880a46b6f7952.png)
而我们使用的是CDH4.2.0,这里有一个OperationHandle 资源泄露进而导致到ZK连接泄漏的一个Bug: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
相关文章推荐
- HiveServer2连接ZooKeeper出现Too many connections问题的解决
- HiveServer2中使用jdbc访问hbase时导致ZooKeeper连接持续增加的解决
- HiveServer连接优化
- Java 连接hive2 server 通过jdbc 出现了问题 Required field 'client_protocol' is unset! Struct:TOpenSessionReq
- 占据过多ZK连接的HiveServer2导致的奇葩问题
- 连接不到 Linux 上的 zookeeper 异常:Session 0x0 for server null,unexpected error, closing socket connection a
- 几个连接HiveServer的客户端界面工具
- ubuntu16.04+hadoop2.7.2+hive1.2.1 server2通过jdbc连接
- python连接hiveserver2
- 启动./hiveserver2查看10000端口 使用beeline连接服务
- 几个连接HiveServer的客户端界面工具
- java本地使用JDBC连接Spark SQL(HiveServer2)
- HiveServer2 JDBC客户端连接Hive数据库
- JDBC远程连接hiveserver2
- beeline连接hiveserver2源码分析
- 解决hive客户端无法连接远程hive server问题
- Hive通过JDBC连接HiveServer
- Java代码通过JDBC连接Hiveserver2
- 解决beeline 不能连接 hiveserver2的问题
- hadoop组件---数据仓库(五)---通过JDBC连接hive的thrift或者hiveserver2