说到可视化,其实就是通过一个客户端实现远程登录,并进行相关的操作。
这里需要使用hive中的HiveServer2服务,使用该服务相当于在hive的机器上启动一个server,而客户端可以通过ip + port的方式对其进行访问,然后,就可以通过客户端来实现我们可视化的需求。
所以,咱们先来配置一下ip和port,当然还有用户名和密码。打开hive-site.xml文件,修改下面几项:
设置访问ip,这里你可以自己设置相应的ip:
<property>
<name>hive.server2.thrift.bind.host</name>
<value>192.168.0.107</value>
<description>Bind host on which to run the HiveServer2 Thrift service.</description>
</property>
设置访问端口,一般设置为10000:
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
<description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.</description>
</property>
设置访问用户名和密码:
<property>
<name>hive.server2.thrift.client.user</name>
<value>sxw</value>
<description>Username to use against thrift client</description>
</property>
<property>
<name>hive.server2.thrift.client.password</name>
<value>0845</value>
<description>Password to use against thrift client</description>
</property>
这样,通过客户端链接hive的地址就确定了:
jdbc:hive2://192.168.0.107:10000/
配置好之后,咱们首先启动hiveserver2服务,打开两个终端,并切换到hive安装路径下的bin路径下面,第一个终端下执行:
hive --service metastore &
然后,在第二个终端下执行(有没有nohup都行):
nohup hive --service hiveserver2 &
来验证一下我们的服务有没有启动,分三步走:
1)使用jps命令查看进程:
2)检查10000端口:
在Mac上使用如下命令:
lsof -i tcp:10000
看到如下:
这个地方一定要注意检查,因为我就是在这个地方卡了好久,总是连接不上,原因就是这里我有另一个进程也是10000端口,一定要把这个多于的进程干掉:
3)使用自带的beeline验证连接是否成功
启动一个新的终端并切换到hive安装路径下的bin路径下面,输入beeline:
这里也许你会看到一堆乱七八糟的输出:
这是因为slf4j的包冲突了,并不影响,如果不想看到的话,把hive安装路径下lib目录中的jar包删掉就行了:
好了,回到正题,在beeline中输入:
!connect jdbc:hive2://192.168.0.107:10000/
接下来输入用户名和密码,正常情况下,你会看到报错:
这里你就需要去修改hadoop里面的配置文件core-site.xml,添加:
<property>
<name>hadoop.proxyuser.meituan_sxw.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.meituan_sxw.groups</name>
<value>*</value>
</property>
其中,这里hadoop.proxyuser.meituan_sxw.hosts中的meituan_sxw是你需要修改的的,因为你看报错中也是说的User: meituan_sxw is not allowed to impersonate。
修改之后,需要重启hadoop服务,以及hiveserver2。此时再来验证一下:
连接成功!
接下来,我们就要使用客户端来链接hive了,这里我们使用DBVisualizer。
先下载两个东西:
第一个是客户端安装包:https://www.dbvis.com 第二个是驱动jar包:https://github.com/timveil/hive-jdbc-uber-jar/releases/tag/v1.0-2.4.0
安装DBVisualizer客户端。安装成功后,按照如下的步骤链接hive:
1)打开DbVisualizer 偏好设置 (“DbVisualizer” > “Preferences”),添加如下语句后,重启DbVisualizer。
-Dsun.security.krb5.debug=true
-Djavax.security.auth.useSubjectCredsOnly=false
如图所示:
2)在管理器对话框点击“Tools”> “Driver Manager…”,点击HIVE。在“Driver File Paths”中将之前下载的“hive jdbc jar”包导入。
3)创建新连接,点击“Database”> “Create Database Connection”
配置好之后,点击connect进行链接,连接成功:
但现在我们的hive表里面什么东西都是没有的,先通过spark导入数据进去,相关的代码查看咱们第二篇的文章:数据分析EPHS(2)-SparkSQL中的DataFrame创建
当我们创建iris表并导入数据后,可以看到客户端这里也同步了:
可以查看数据:
编写sql语句,首先点击上方的绿色三角,接下来编写一条hive sql语句并执行:
成功执行!