[Hive] - Beeline 偶发 Unable to read HiveServer2 uri from ZooKeeper 问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Hive] - Beeline 偶发 Unable to read HiveServer2 uri from ZooKeeper 问题相关的知识,希望对你有一定的参考价值。

参考技术A

用户有大量的并发 beeline hive sql 任务,偶发 Unable to read HiveServer2 uri from ZooKeeper 报错。
hive 版本:hdp 1.2.1

修改 beeline connect url 增加 retries。
beeline url 修改前:

beeline url 修改后

通过阅读源码,hiveserver2 连接步骤大致如下:
1)获取连接 url,如果是 serviceDiscoveryMode=zooKeeper ,动态的方式获取真正的连接信息与配置
2)通过 ZK 获取 hiveserver2 所有节点,对应的路径为/hiveserver2/。路径格式为: "/" + zooKeeperNamespace :这个 zooKeeperNamespace 就是连接串里面配置的 hiveserver2。
3)从 list 中随机取一个 Znode,获取 zk 中 Znode 的值
4)解析 url ,获取真正的 hiveserver2 的地址与端口等信息
5)创建连接,支持重试

问题在于:

一个小建议:遇到此类问题,直接看源码是最好的, 不要去网上瞎找。
Hive 3.x 的版本请注意这个 issue: https://issues.apache.org/jira/browse/HIVE-19825 ,也可能会导致随机的失败

以上是关于[Hive] - Beeline 偶发 Unable to read HiveServer2 uri from ZooKeeper 问题的主要内容,如果未能解决你的问题,请参考以下文章

Hive 8Hive2 beeline 和 Hive jdbc

beeline链接hive报错

Hive Beeline 官方文档学习

配置hive server2鉴权和beeline无密码链接hive数据仓库

Linux下启动hive服务(beeline)

Hive3.1.2的Beeline执行过程