当前位置:   article > 正文

Hive 高可用HA搭建_hive ha

hive ha

1、使用HiveServer2提供HA的好处

  • 1. 在应用端不用部署Hadoop和Hive客户端;
  • 2. 相比hive-cli方式,HiveServer2不用直接将HDFS和Metastore暴漏给用户;
  • 3. 有安全认证机制,并且支持自定义权限校验;
  • 4. 有HA机制,解决应用端的并发和负载均衡问题;
  • 5. JDBC方式,可以使用任何语言,方便与应用进行数据交互;
  • 6. 从2.0开始,HiveServer2提供了WEB UI。

 

Hive从0.14开始,使用Zookeeper实现了HiveServer2的HA功能(ZooKeeper Service Discovery),Client端可以通过指定一个nameSpace来连接HiveServer2,而不是指定某一个host和port。

如果使用HiveServer2的Client并发比较少,可以使用一个HiveServer2实例。

但如果这一个实例挂掉,那么会导致所有的应用连接失败。

如上图,这边准备在node1和node2上分别启用两个HiveServer2的实例,并通过zookeeper完成HA的配置

2、配置

zookeep已经安装好,并可用。hive单机已经可用。

在两个安装了apache-hive-2.0.0-bin的机器上,分别编辑hive-site.xml,添加以下参数:

 

<property>

<name>hive.server2.support.dynamic.service.discovery</name>

<value>true</value>

</property>

 

<property>

<name>hive.server2.zookeeper.namespace</name>

<value>hiveserver2</value>

</property>

 

<property>

<name>hive.zookeeper.quorum</name>

<value> zkNode1:2181,zkNode2:2181,zkNode3:2181</value>

</property>

 

<property>

<name>hive.zookeeper.client.port</name>

<value>2181</value>

</property>

 

<property>

<name>hive.server2.thrift.port</name>

<value>10000</value> //两个HiveServer2实例的端口号要一致

</property>

数据库的配置记得修改成数据库所在节点的位置。这边数据库安装在node1节点上。

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://node1:3306/hive?createDatabaseIfNotExist=true</value>

3、测试

通过hiveserver2 启动后(日志中会出现如下警告,不影响使用)

,查看源码,和配置没有找到出问题的原因。可以通过安装tez消除这个警告。

,在zookeeper中可以看到相关实例。

如果通过beeline jdbc:hive2://<zookeeper quorum>/<dbName>;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2     连接出现以下错误。需要在hdfs core-site.xml中添加如下配置:

Error: Could not open client transport for any of the Server URI's in ZooKeeper: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: hive is not allowed to impersonate hive (state=08S01,code=0

 

hadoop.proxyuser.hive.groups

hadoop.proxyuser.hive.hosts

 

 

其中 hive为启动HiveServer2的用户,然后刷新配置:

yarn rmadmin -refreshSuperUserGroupsConfiguration

hdfs dfsadmin -refreshSuperUserGroupsConfiguration

 

beeline 
!connect jdbc:hive2://node1:2181,node2:2181,node3:2181,node4:2181/userdb;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2

select * from employee;

至此,HiveServer2的多实例高可用-Ha配置完成,的确能解决生产中的很多问题,比如:并发、负载均衡、单点故障、安全等等。

因此强烈建议在生产环境中使用该模式来提供Hive服务。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/519270
推荐阅读
相关标签
  

闽ICP备14008679号