Hive JDBC问题
问题简述
我在使用Java代码中使用Hive JDBC查Hbase中的数据总是包连接失败,开始一直任务是集群的问题,但是使用Hive客户端没有问题,最后将Hadoop、Hbase、Hive的日志基本调整问DEBUG,在Hbase的log中发下下面的内容定位到是权限的问题。
DEBUG [RpcServer.reader=2,bindAddress=slave01,port=16020] ipc.RpcServer: Connection authorization failed: User: hadoop is not allowed to impersonate hadoop
解决问题
- Hadoop的core-site.xml文件新增如下配置
<!-- 下面的配置意思是名为hadoop的用户只能从master、slave01、slave02连接到模拟属于hadoop的用户-->
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>hadoop</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>master,slave01,slave02</value>
</property>
<!-- 宽松的安全性,我们也可以使用如下配置 -->
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
- Hive的hive-site.xml文件新增如下配置
<!-- 默认情况下,HiveServer2以提交查询的用户执行查询(true),如果hive.server2.enable.doAs设置为false,查询将以运行hiveserver2进程的用户运行 -->
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
</property>