这几天自己部署一个测试的Hadoop集群,要测试一些hive数据获取的接口功能。Hive部署好后,使用HiveServer2连接总是出现一些模型奇妙的问题:
问题1:Connection refused
问题2:Connection reset
问题3:一个客户端使用jdbc:hive2连接后,其他客户端就连接不上
解决方法:
1、确保hive-site.xml配置的没有问题,我一开始就是没有配置hiveserver2用户名和密码,一直是使用的服务器的用户名和密码登录的。
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>myjcyf</value>
<description>password to use against metastore database</description>
</property>
<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>
</configuration>
2、配置hadoop的core-site.xml,添加如下配置:
<property>
<name>hadoop.proxyuser.xxx.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.xxx.groups</name>
<value>*</value>
</property>
其中xxx填写登录hive的用户名,我这里hive-site.xml配置的用户名是hive2,所以我这里就写hive2。
<property>
<name>hadoop.proxyuser.hive2.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hive2.groups</name>
<value>*</value>
</property>