Hive JDBC問題
問題簡述
我在使用Java代碼中使用Hive JDBC查Hbase中的數(shù)據(jù)總是包連接失敗,開始一直任務(wù)是集群的問題,但是使用Hive客戶端沒有問題,最后將Hadoop、Hbase、Hive的日志基本調(diào)整問DEBUG,在Hbase的log中發(fā)下下面的內(nèi)容定位到是權(quán)限的問題。
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以提交查詢的用戶執(zhí)行查詢(true),如果hive.server2.enable.doAs設(shè)置為false,查詢將以運行hiveserver2進程的用戶運行 -->
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
</property>