解决HBase整合Hive时一直连接地址为localhost:2181的zookeeper的问题
问题描述
我在搭建HBase集群整合hive的时候,hive一直连接本地的zookeeper,而不是连接HBase集群中配置的zk地址
1.HBase
起初以为HBase中hbase-env.sh 这个配置没有生效,
export HBASE_MANAGES_ZK=false
反复检查了配置,应该是没有问题
2.Hive
检查hive中的zookeeper,也是没有问题的。
最后发现
hbase.zookeeper.quorum
:默认为 localhost,必须进行配置ZooKeeper 集群的地址,除非zookeeper和hive在同一台服务器。
解决方法
解决方法:
修改hive配置文件
[along@hdp14 ~]$ cd /opt/bigdata/hive
[along@hdp14 hive]$ vim conf/hive-site.xml
添加让如下内容,配置hbase的zookeeper
<!--Hbase 配置-->
<property>
<name>hbase.zookeeper.quorum</name>
<value>hdp16,hdp17,hdp18</value>
</property>
重启hive,问题解决
附录
一个分布式 HBase 集群的部署运行强烈依赖于 ZooKeeper,在当前的 HBase 系统实现中,ZooKeeper 扮演了非常重要的角色。在配置文件 conf/hbase-site.xml 中配置与 ZooKeeper 相关的几个重要配置项:
- hbase.zookeeper.quorum:默认为 localhost,必须进行配置。ZooKeeper 集群的地址。
- hbase.zookeeper.property.clientPort:默认为2181,可以不进行配置。
- zookeeper.znode.parent:默认为 /hbase,可以不配置。HBase 在 ZooKeeper 的 zNode 根节点位置,每次 HBase 集群重启 zNode 都会重建,所以如果集群重启的话,重启之前直接删除该 zNode 也是没有问题的。
- zookeeper.session.timeout:表示 RegionServer 与 ZooKeeper 之间的会话超时时间,一旦 session 超时,ZooKeeper 就会感知到,通知 Master 将对应的 RegionServer 移出集群,并将该 RegionServer 上所有 Region 迁移到集群中其他RegionServer。
版权声明:本文为weixin_52918377原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。