许吉友 - 运维

Hive 架构

官方文档:https://cwiki.apache.org/confluence/display/Hive/Design

架构图:

img

Hive 架构

图1显示了Hive的主要组件及其与Hadoop的交互。如图所示,Hive的主要组件是:

图1还显示了典型查询如何在系统中流动。 UI调用驱动程序的执行接口(图1中的步骤1)。驱动程序为查询创建会话句柄,并将查询发送给编译器以生成执行计划(步骤2)。编译器从元存储中获取必要的元数据(步骤3和4)。该元数据用于对查询树中的表达式进行类型检查,以及根据查询谓词修剪分区。编译器生成的计划(步骤5)是阶段的DAG,每个阶段都是映射/归约作业,元数据操作或HDFS上的操作。对于map / reduce阶段,该计划包含地图运算符树(在映射器上执行的运算符树)和reduce运算符树(对于需要reducers的运算)。执行引擎将这些阶段提交给适当的组件(步骤6、6.1、6.2和6.3)。在每个任务(映射器/化简器)中,与表或中间输出关联的解串器用于从HDFS文件读取行,并将这些行通过关联的运算符树传递。生成输出后,将通过序列化器将其写入临时HDFS文件中(如果不需要减少操作,则在映射器中发生)。临时文件用于向计划的后续地图/缩小阶段提供数据。对于DML操作,最终的临时文件将移动到表的位置。此方案用于确保不读取脏数据(文件重命名是HDFS中的原子操作)。对于查询,执行引擎直接从HDFS中读取临时文件的内容,作为驱动程序获取调用的一部分(步骤7、8和9)。

Hive 数据模型

Hive中的数据组织为: