挖坑:hive集成kerberos

集成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

 

简单记录,有问题欢迎交流

相关文章
相关标签/搜索