集成hive+kerberos前,hadoop已經支持kerberos,因此基礎安裝略去: https://www.cnblogs.com/garfieldcgf/p/10077331.html html
直接用以前hadoop集成生成的keytab文件開始配置:數據庫
hive的 conf/hive-site.xml,添加以下:apache
<property> <name>hive.server2.authentication</name> <value>KERBEROS</value> </property> <property> <name>hive.server2.authentication.kerberos.principal</name> <value>udap/_HOST@STA.COM</value> </property> <property> <name>hive.server2.authentication.kerberos.keytab</name> <value>/home/udap/app/hadoop-2.6.0-cdh5.7.2/etc/hadoop/udap.keytab</value> </property> <property> <name>hive.metastore.sasl.enabled</name> <value>true</value> </property> <property> <name>hive.metastore.kerberos.keytab.file</name> <value>/home/udap/app/hadoop-2.6.0-cdh5.7.2/etc/hadoop/udap.keytab</value> </property> <property> <name>hive.metastore.kerberos.principal</name> <value>udap/_HOST@STA.COM</value> </property>
第二步,配置hadoop中的core-site.xml,添加以下:app
<property> <name>hadoop.proxyuser.hive.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hive.groups</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hdfs.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hdfs.groups</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.HTTP.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.HTTP.groups</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.udap.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.udap.groups</name> <value>*</value> </property>
若是有多臺,請保證每一個節點配置都同樣工具
bin目錄下,啓動hiveoop
nohup ./hive --service metastore &
nohup ./hive --service hiveserver2 &
啓動完成後就能夠登陸kerberos,而後用hive工具訪問數據,若是是beenline登陸,則須要使用以下連接串:spa
!connect jdbc:hive2://10.1.4.32:10000/default;principal=udap/host32@STA.COM
其中後面的principle,是建立數據庫所用的用戶,而非訪問的用戶代理
錯誤:code
注意core-site中的用戶代理配置,當kb的用戶沒有在配置的用戶許可中時將會有報錯: server
org.apache.hadoop.ipc.RemoteException: User: root is not allowed to impersonate root
即,遠程異常:用戶root不容許模擬root
在hadoop中,遠程訪問時經過用戶代理的方式,這裏的不容許是須要配置特定用戶容許遠程訪問:
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
<description>Allow the superuser oozie to impersonate any members of the group group1 and group2</description>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
<description>The superuser can connect only from host1 and host2 to impersonate a user</description>
</property>
若是報錯不是root,或者你須要的並非root用戶,就修改一下<name>標籤中的root
簡單記錄,有問題歡迎交流