本文主要介绍Hive的架构和以及HQL的查询阶段,主要内容包括:
- Hive的架构
- 架构中的相关组件介绍
- HQL的查询阶段
Hive的架构
hive的基本架构图如下图所示:
相关组件介绍
- 数据存储
Hive中的数据可以存储在任意与Hadoop兼容的文件系统,其最常见的存储文件格式主要有ORC和Parquet。除了HDFS之外,也支持一些商用的云对象存储,比如AWS S3等。另外,Hive可以读入并写入数据到其他的独立处理系统,比如Druid、HBase等。
- Data catalog
Hive使用Hive Metastore(HMS)存储元数据信息,使用关系型数据库来持久化存储这些信息,其依赖于DataNucleus(提供了标准的接口(JDO, JPA)来访问各种类型的数据库资源 ),用于简化操作各种关系型数据库。为了请求低延迟,HMS会直接通过DataNucleus直接查询关系型数据库。HMS的API支持多种编程语言。
- 执行引擎
最初版本的Hive支持MapReduce作为执行引擎,后来又支持
Tez和Spark作为执行引擎,这些执行引擎都可以运行在YARN上。
- 查询服务
Hiveserver2(HS2)允许用户执行SQL查询,Hiveserver2允许多个客户端提交请求到Hive并返回执行结果,HS2