场景:远程登录配有Kerberos的hbase的时候,client端用到的kerberos的principal是[email protected]
错误:
Org.apache.hadoop.ipc.RemoteException:User:clientis not allowed to impersonate root;
解决方法:
在hadoop的配置文件core-site.xml中配置如下内容:
<property>
<name>hadoop.proxyuser. client.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser. client.groups</name>
<value>*</value>
</property>
上述错误的根本解决办法:
在client端的配置目录里添加core-site.xml文件,内容如下:
<configuration>
<property>
<name>hadoop.security.authentication</name>
<value>kerberos</value>
</property>
</configuration>
即可,就不需要在生产环境的hadoop的core-site.xml中添加任何配置了。如果client端没有该配置文件,则在hbase用户远程访问hdfs文件系统的时候,因为没有读到hadoop的认证方式为kerberos,而成了代理proxy模式,即日志里记载的是AUTH=PROXY,而非KERBEROS,所以认证不通过,显示client不能伪装为root用户。
在hbase shell中登录远程的hbase数据库时,必须把hadoop的kerberos配置放在core-site.xml中才可以,放在hbase-site.xml中是不认的,所以需要在指定的登录配置目录下放一个core-site.xml文件添加该配置项。但是在java程序中,把该配置项添加到hbase-site.xml中就可以,不需要单独的core-site.xml配置文件。
在终端的hbase shell远程登录hbase命令:HBASE_CONF_DIR=”/opt/hbase-1.2.1/back_conf/”/opt/hbase-1.2.1/bin/hbase shell
其中的HBASE_CONF_DIR就是指定的配置目录,该目录下目前放了hbase-site.xml和core-site.xml以及需要的keytab文件
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/9520.html