处理hive中hiveserver2启动后,beeline连接出现的“拒绝连接” # 谭子

本文档详细介绍了在Hadoop环境下,当使用Beeline连接HiveServer2时遇到权限问题的解决步骤。首先,需要修改core-site.xml文件,添加允许远程用户的配置;然后,重启Hadoop集群和HiveServer2服务;最后,测试Beeline连接,确认问题已解决。此方法适用于防火墙关闭但仍然出现连接问题的情况。
摘要由CSDN通过智能技术生成

处理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远程成功。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值