Hive 比较特殊,它既是自己的客户端,又是服务端。
Hive配置了元数据存储的介质是MySQL 数据库,这时候还是local(本地)模式,HiveServer2 是通过自己的JDBC程序直接访问MySQL,从而获取元数据。
但是如果一旦配置了Metastore服务,就必须先启动metastore服务进程,Hiveserver2才能正常启动,否则会一直等待,而10000端口一直没起来。
Hive 相关文章:
Metastore 数据库是 Hive 元数据存储的地方。Hive 数据库、表、函数等的定义都存储在 Metastore 中。根据系统配置方式,统计信息和授权记录也可以存储在此处。Hive 或者其他执行引擎在运行时使用此数据来确定如何解析,授权以及有效执行用户查询。
Metastore 服务的作用是建立起和Hive客户端的连接,当客户端来请求,Metastore服务去远程Metastore数据库查询信息返回。
Metastore 服务的启动方式:
hive --service metastore
或者 nohup hive --service metastore &
[root@centos-150 hive-2.3.9]# hive --service metastore
2022-06-08 00:24:50: Starting Hive Metastore Server
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hive-2.3.9/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop-2.10.1/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Metastore服务实际上就是一种thrift服务,通过它我们可以获取到hive 元数据。
hive-site.xml 配置metastore服务,如下所示:
hive.metastore.uris
thrift://centos-150:9083
hive.metastore.client.socket.timeout
3600
不过,在上述 hive-site.xml 配置文件中,我们并没有配置metastore 服务。
HiveServer2 是一种可选的 Hive 内置服务,可以允许远程客户端使用不同编程语言向 Hive 提交请求并返回结果。
HiveServer2 是一种能使客户端执行 Hive 查询的服务。HiveServer2 是 HiveServer1 的改进版,HiveServer1 已经被废弃。HiveServer2 对 HiveServer1 进行了重写来解决HiveServer1的问题。
HiveServer2 作为复合服务在单个进程中运行,其中包括基于 Thrift 的 Hive 服务(TCP或HTTP)以及用于 Web UI的 Jetty Web 服务。HiveServer2 可以支持多客户端并发和身份认证。旨在为开放API客户端(如JDBC和ODBC)提供更好的支持。
HiveServer2 实现了一个新的基于 Thrift 的 RPC 接口,该接口可以处理客户端并发请求。当前版本支持 Kerberos,LDAP 以及自定义可插拔身份验证。新的 RPC 接口也是 JDBC 和 ODBC 客户端更好的选择,尤其是对于元数据访问。
Metastore 可以配置为嵌入式(与 HiveServer2 同一个进程)或者远程服务(也是基于 Thrift 的服务)。HiveServer2 访问 Metastore 以获取编译所需的元数据。
HiveServer2 为不同执行引擎(MapReduce/Tez/Spark)提供物理执行计划,并将作业提交到 Hadoop 集群执行。
启动hiveserver2服务:
# 后台启动 metastore 服务器端,默认使用 10000 端口
nohup hive --service hiveserver2 &
# 或者使用指定的端口号:
nohup hive --service hiveserver2 --hiveconf hive.server2.thrift.port 10001 &
beeline 访问方式也是通过JDBC连接的,驱动为hive2。关于beeline 的使用,可以访问小编之前的文章。
Hive 从 2.0.0 版本开始,为 HiveServer2 提供了一个简单的 WEB UI 页面,在页面中我们可以直观的看到当前链接的会话、历史日志、配置参数以及度量信息。默认情况下,Web UI 端口为 10002。
如果要开启 Web UI 需要在 hive-site.xml 配置文件中修改配置:
hive.server2.webui.host
hive.server2.webui.port
如下所示:
hive.server2.webui.host
centos-150
hive.server2.webui.port
10002
配置完成之后启动 hiveserver2 服务,通过 http://centos-150:10002/ 地址访问 Web UI:
也可以查看 10002 端口,如图所示:
留言与评论(共有 0 条评论) “” |