一般在cdh上配置,如图:
 
具体的几个配置项如下:
hive.server2.support.dynamic.service.discovery=true
hive.server2.zookeeper.namespace=hiveserver2_zk
hive.zookeeper.quorum=test-hadoop-pc06:2181,test-hadoop-pc07:2181,test-hadoop-pc08:2181
hive.zookeeper.client.port=2181
hive.server2.thrift.port=10000
hive.server2.enable.doAs=false
hive.server2.authentication.kerberos.principal=hive/_HOST@ws.com
配置完重启就行了。

注意:hive.server2.authentication.kerberos.principal配置项的hive/_HOST@ws.com 值中的_HOST代理了kerberos认证域,是动态的,或者说这是kerberos认证服务器的地址,这个最好这么写,因为你通过zookeeper HA方式连接hive时,zookeeper路由给你那个hiveserver是随机的,所以jdbc中的配置项principal不能把认证主体的域名写死为某一个具体的,所以就得用_HOST,当然你如果写死成某一个具体的,当zookeeper随机分配的hiveserver正好与这个写死的域能对应上也能访问成功,但那只能算你蒙对了。

注意:不要在hive-site.xml中把hive.server2.thrift.bind.host配置成0.0.0.0,一旦配置上,HA的两个hiveserver2注册到zoopeeper上显示的host就是0.0.0.0,这样客户端拿到hiveserver2 IP是0.0.0.0,没法连接真正的hiveserver2了

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐