本文是大数据系列第 16 篇,介绍 HiveServer2 的部署配置以及如何使用 Beeline 客户端进行远程连接。
什么是 HiveServer2
HiveServer2(HS2)是 Hive 提供的一个服务组件,允许远程客户端通过 Thrift 协议执行 SQL 查询并返回结果,支持跨平台、跨语言访问。
核心特性:
- 提供 JDBC/ODBC SQL 接口
- 支持多客户端并发连接与会话隔离
- 支持 Kerberos、LDAP 等多种认证方式
- 与 YARN/LLAP 集成进行资源管理
- 默认端口:10000(Thrift)、10002(Web UI)
配置步骤
1. 配置 Hadoop 代理用户
HiveServer2 需要以代理用户身份提交作业,在所有节点的 core-site.xml 中添加:
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
2. 开启 WebHDFS
在 hdfs-site.xml 中启用 WebHDFS 支持:
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
3. 配置 hive-site.xml
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.server2.authentication</name>
<value>NONE</value>
</property>
配置修改后,需要重启 HDFS 和 YARN 使其生效。
启动 HiveServer2
在主节点(h121)上启动 HiveServer2:
nohup hiveserver2 &
验证服务是否正常监听 10000 端口:
lsof -i:10000
也可以访问 http://h121:10002 查看 Web UI,确认服务状态。
使用 Beeline 远程连接
Beeline 是 HiveServer2 的官方命令行客户端,支持从任意节点远程连接。以从 h122 连接 h121 上的 HiveServer2 为例:
beeline
!connect jdbc:hive2://h121.wzk.icu:10000
输入用户名(如 root)和密码(可为空),连接成功后即可执行 HQL:
show databases;
use default;
show tables;
select * from test limit 10;
HCatalog 简介
HCatalog 是基于 Hive Metastore 构建的表存储管理层,向 MapReduce、Pig、Spark 等计算框架暴露 Hive 的元数据。使用 HCatalog 的好处:
- 无需关心底层数据格式(ORC、Parquet、TextFile)
- 支持按分区和字段选择性读取,不必扫描全表
- 统一多个计算引擎对同一份数据的访问方式
HCatalog 随 Hive 一同安装,无需额外部署,启用后可通过 hcat 命令行工具操作。