通过远程连接hive,出现问题,原因是没有配置hiveserver2的用户密码
Error: Could not open client transport with JDBC Uri: jdbc:hive2://hadoop2:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: hadoop is not allowed to impersonate hive2 (state=08S01,code=0)
1、修改配置文件
编辑Hadoop的 core-site.xml文件:
在配置文件末尾加上以下内容
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
其中,hadoop为上面提到的运行Hadoop namenode进程的用户名。
2、编辑Hive的hive-site.xml
在配置文件末尾加上以下内容
<property>
<!-- hiveserver2用户名 -->
<name>beeline.hs2.connection.user</name>
<value>hive2</value>
</property>
<property>
<!-- hiveserver2密码 -->
<name>beeline.hs2.connection.password</name>
<value>hive2</value>
</property>
<property>
<!-- hiveserver2端口 -->
<name>beeline.hs2.connection.hosts</name>
<value>localhost:10000</value>
</property>
3、重启Hadoop
测试配置是否成功
启动hiveserver2
$ $HIVE_HOME/bin/hiveserver2
连接方式一
使用beeline连接hiveserver2
$ $HIVE_HOME/bin/beeline -u jdbc:hive2://localhost:10000;auth=hive2;password=hive2
这里的用户名hive2和密码hive2自然便是前面在hive的配置文件hive-site.xml中配置的用户名和密码啦
连接方式二
先启动beeline
$ $HIVE_HOME/bin/beeline
然后在beeline中连接hiveserver2:
beeline> !connect jdbc:hive2://localhost:10000
接着输入hive用户名和密码即可。