1.Hive的metastore服务
- Metadata概念:
元数据包含用Hive创建的database、table等的元信息。元数据存储在关系型数据库中。如Derby、MySQL等。 - Metastore作用:
客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可。
- 启动metastore服务
nohup /opt/hive/bin/hive --service metastore &
启用metastore服务,资源占用率会下降,查询速度更快。
2.Hive的hiveserver2服务
使用hiveserver2服务最大的好处就是可以把hive启动为一个后台服务,只有启动为后台服务,才能让jdbc/odbc等程序去连接hive
- Hiveserver和beeline
下面使用的hive-2.3.5版本中,是需要再hadoop集群中做如下修改,否则无法使用
修改hadoop
集群的hdfs-site.xml
文件,加入一条配置信息,表示启动webhdfs
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
- 修改
hadoop
集群的core-site.xml
配置文件,加入两条配置信息,表示设置hadoop的代理用户,配置如下:表示任何一个hive的客户端节点上,任何用户都可以访问
<!-- 如果连接不上10000 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
- 配置完记得要重启整个hdfs集群和启动hiveserver2服务
nohup /opt/hive/bin/hive --service hiveserver2 &
or
nohup /opt/hive/bin/hive --service hiveserver2 2>/opt/hive/hiveserver2.err &
启动后,我们可以用beeline客户端连接一下,可以看到之前我们创建的数据库,如下图所示:
3 HiveServer2 的 Web UI
除了编程语言本身的报错之外,hive的log日志的信息更加详细,有利于寻找错误的真正的原因,有个web界面形式的hive程序,查看 log 日志将是十分高效的!
没错的,Hive从2.0版本开始,为HiveServer2提供了一个简单的WEB UI界面,界面中可以直观的看到当前链接的会话、历史日志、配置参数以及度量信息。
在hive-site.xml配置文件中添加以下配置信息
<property>
<name>hive.server2.webui.host</name>
<value>wyl01.com</value>
</property>
<property>
<name>hive.server2.webui.port</name>
<value>10002</value>
</property>
不过如果不配置上述内容,理论上也是可以看到hive的web UI页面,我就是在没配置的情况下,启动hive服务后就可以在页面中打开