Hive 是建立在 Hadoop 之上的开源数据仓库框架,旨在处理大规模结构化数据。它提供了一种名为 HiveQL 的查询语言,类似于 SQL,用于查询和分析数据。Hive 利用 Hadoop 分布式文件系统(HDFS)作为底层存储系统,支持处理 PB 级别的大规模数据,并且可以与其他存储系统如HBase 集成。
本集群中Hive 基于 MapReduce(MR)执行引擎运行:HQL 语句经解析、编译、优化后生成 MapReduce 作业,由 YARN 统一调度执行,适合大规模数据的离线批处理分析场景。
Hive 的架构如下图所示,其包含以下几个主要部分:
1、Beeline、JDBC 和 Thrift 客户端:提供给用户与 Hive 交互的接口。
2、Hive 驱动(Driver):包含解析器(Parser)、优化器(Optimizer)和执行查询的核心模块。
3、Metastore:用于存储表、分区、模式等元数据。
4、执行引擎:本集群使用 MapReduce 执行引擎,用于在 YARN 集群上执行查询。
Hive 各核心组件的功能说明如下表所示:
| 组件 | 功能说明 |
|---|---|
| HiveServer2 | 提供Thrift 服务,接收 Beeline、JDBC 等客户端的连接与 SQL 请求 |
| Metastore | 元数据服务,存储库、表、分区、统计信息等元数据,后端为关系型数据库 |
| Beeline | 基于JDBC 的命令行客户端,通过 HiveServer2 访问,推荐使用 |
| Driver | 负责SQL 的解析、编译、优化与执行计划生成 |
| MapReduce 执行引擎 | 将执行计划转为MapReduce 作业并提交 YARN 运行 |
以下一些基础概念会对Hive 的理解和应用产生帮助:
1、HQL:HQL(Hive Query Language)是Hive 的查询语言,类似于 SQL(Structured Query Language),用于查询和管理存储在 Hadoop 分布式文件系统(HDFS)中的数据。
2、Kerberos:Kerberos 是一个计算机网络身份验证协议,广泛应用于企业和组织中,以确保用户和服务之间的通信安全性。
3、kinit:kinit 是 Kerberos 客户端工具中的一个命令,用于向 Kerberos 认证服务器请求认证并获取票据(ticket)。
4、klist:klist 是 Kerberos 客户端工具中的一个命令,用于查看当前用户或系统中缓存的 Kerberos 票据(ticket)信息。
5、keytab:keytab 是一种文件格式,用于存储加密的密钥,供 Kerberos 身份验证协议自动登录时使用。keytab 文件中包含一个或多个 Kerberos 用户(通常是服务账户)的密钥,通过这些密钥可以在无需输入密码的情况下验证身份。
6、UDF:在 Apache Hive 中,用户定义的函数(UDF)是用户可以自行编写并注册到 Hive 中的函数,这样这些函数就可以在 HQL 查询中使用。
整体流程说明,Hive 使用的一般流程为:完成 Kerberos 认证→打开 Hivebeeline客户端→根据业务模型建表→导入数据→进行数据分析,具体步骤如下:
1、完成 Kerberos 认证;
2、打开 Hivebeeline客户端;
3、根据业务模型建表;
4、导入数据;
5、进行数据分析。