一、先决条件
假设已经部署好hadoop集群并且在集群服务器上都已安装hive
首先需要启动hiveserver2服务:
cd $HIVE_HOME/bin
hive --service hiveserver2
查看hive.log确认hive2启动成功:
二、安装并配置SQuirrel
1)官网地址: http://www.squirrelsql.org/,我下载的版本是3.7.1
下载后双击squirrel-sql-3.7.1-standard.jar,进行安装,安装过程有一步可以选中文:
其它的直接下一步就好。
2)从开始菜单中打开SQuirrel SQL Client,点击最左侧的”Drivers”驱动tab页,点击添加(+)来添加Hive的驱动配置:
3)在弹出的添加驱动对话框中填入Hive的驱动信息:
注意:在点击“OK”前,需要点“Extra Class Path”tab页导入所需jar包(jar包都可以在hive或hadoop下找到),列表如下:
然后就可以点击OK了,SQuirrel会有连接提示:
4)进入最左侧的”Aliases”别名tab页面,点击添加(+),建立一个Hive的链接:
这里要注意下:user name和password取决于hadoop的core-site.xml文件的配置,如下:
我这里配置为*,就不用填写username和password了,如果这两项没配置会有报错:java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException):
User:hadoop is not allowed to impersonate anonymous
或者可以设置Hive的用户名和密码,修改$HIVE_HOME/conf/hive-site.xml:
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>ername to use against metastoredatabase</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastoredatabase</description>
</property>
5)SQuirrel SQL Client连接Hive2
双击创建的Aliases点击Connect即可连接到Hive:
三、SQuirrel常见错误
1)错误信息:Permission denied: user=hive, access=READ_EXECUTE, inode=”/tmp/xxx”:Hadoop:supergroup:drwx——
解决办法:
a、由于Hive没有hdfs:/tmp目录的权限,赋权限即可:
hdfs dfs -chmod -R 777 /tmp
b、给个别用户赋权:
hadoop fs -chown -R hive:hive /tmp 其中hive是通过jdbc访问hive数据库连接中的用户名
2)错误信息:Error: org.apache.thrift.transport.TTransportException: java.net.SocketTimeoutException: Read timed out
调配hive参数:
hive.metastore.client.socket.timeout
说明:Client socket 的超时时间
默认值:20秒
设置命令:set hive.metastore.client.socket.timeout = 500
注意:HiveMetaStore建议启动在hadoop集群的master服务器;HiveServer2建议启动在hadoop集群的slave服务器上;不然会出现一些问题,比如:java.lang.OutOfMemoryError: PermGen space(我把HiveServer2启动在master上就会报这个错,没找到根本原因)