处理hadoop中hive无法连接hiveserver2问题
在使用beeline上使用!connect jdbc://hive2://hadoop01:10000出现报错内容如下:
Error: Could not open client transport with JDBC Uri: jdbc:hive2://hadoop1:10000:
Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException):
User: andy is not allowed to impersonate andy (state=08S01,code=0)
出现这样的报错信息,究其根本是beeline无法识别到已启动的hiveserver2,在防火墙已关闭仍出现这个问题时,我推荐用下文方法来解决。
解决方法
Ⅰ、先打开指定文件目录,修改core-site.xml
(需要确保hadoop集群已关闭)
stop-all.sh
cd /export/servers/hadoop-2.7.4/etc/hadoop
vi core-site.xml
ps:这里修改的core-site.xml只需要被远程的主机即可,不需要将所有集群上的主机都修改,但如果真这么做了,也是OK的。
Ⅱ、在core-site.xml内添加下列配置信息
#core-site.xml的配置
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
ps:需要注意的是,配置文件中的“root”指的是当前使用者名称,因为我的Xshell连接采用了ssh协议,以“root”为用户名。如果我的虚拟机当前用户名不是root,但又想要连接入hive中的beeline远程,就需将上述配置信息中的“root”更换为当前用户名,或你所想要通过beeline远程连接的指定用户名。
Ⅲ、重启hadoop集群,启动01的hiveserver2
(这里同时也要确保mysql是启动的:/etc/init.d/mysqld start)
start-all.sh
cd /export/servers/apache-hive-1.2.1-bin/
bin/hiveserver2
Ⅳ、启动01(或02)上的beeline远程,测试是否连接成功
需要在xshell会话框上复制01的会话
在xshell里右键hadoop01,选择复制会话(出现另外一个hadoop01)
在另外一个01上jps查看是否存在RunJar节点,确定hiveserver2是启动成功的
并在另外一个01上启动beeline
cd /export/servers/apache-hive-1.2.1-bin/
bin/beeline
!connect jdbc:hive2://hadoop01:10000
出现上图内容则代表能够连接hiveserver2服务,beeline远程成功。