先决条件 – Hadoop、Apache Hive简介
下图展示了Hive的主要组件及其与 Hadoop 的交互,并进一步描述了所有组件:
- 用户界面 (UI) –
顾名思义,用户界面提供了用户和配置单元之间的接口。它使用户能够向系统提交查询和其他操作。用户界面支持Hive Web UI、 Hive命令行和Hive HD Insight(在 Windows 服务器中)。 - 司机 –
接口后用户的查询被Hive内的驱动程序接收。会话句柄的概念由驱动程序实现。以 JDBC/ODBC 接口为模型的 API 的执行和获取由用户提供。 - 编译器——
查询是解析,对不同查询块和查询表达式的语义分析由编译器完成。借助数据库中的表和从 Metastore 观察到的分区元数据的执行计划最终由编译器生成。 - 元存储 –
包含属性和属性级别信息的仓库中不同表和分区的所有结构化数据或信息都存储在元存储中。读取和写入数据以及存储数据的相应 HDFS 文件所需的序列或去序列。 Hive选择相应的数据库服务器来存储数据库、表、表中的属性、数据库的数据类型和 HDFS 映射的 schema 或 Metadata。 - 执行引擎 –
编译器制定的执行计划的执行在执行引擎中执行。该计划是一个阶段的 DAG。计划的各个阶段内的依赖关系由执行引擎管理,并且它在合适的系统组件上执行这些阶段。
图表 –构建在 Hadoop 之上的Hive架构
在上图中连同架构一起,逐步演示了Hive和 Hadoop 中的作业执行流程。
- 步骤 1:执行查询 –
Hive 的接口(例如命令行或 Web 用户界面)将查询传递给驱动程序以执行。其中,UI 调用 ODBC 或 JDBC 等驱动程序的执行接口。 - 第 2 步:获取计划 –
驱动程序为查询设计会话句柄,并将查询传递给编译器以制定执行计划。换句话说,驱动程序与编译器交互。 - 第 3 步:获取元数据 –
在这种情况下,编译器将元数据请求传输到任何数据库,编译器从元存储中获取必要的元数据。 - 第 4 步:发送元数据 –
Metastore 传输元数据作为对编译器的确认。 - 第 5 步:发送计划 –
编译器通过编译器制定的执行计划与驱动程序通信以执行查询。 - 第 6 步:执行计划 –
执行计划由驱动程序发送到执行引擎。- 执行作业
- 任务完成
- dfs操作(元数据操作)
- 步骤 7:获取结果 –
从驱动程序获取结果到用户界面 (UI)。 - 步骤 8:发送结果 –
结果从驱动程序传输到执行引擎。将结果发送到执行引擎。当结果从数据节点检索到执行引擎时,它会将结果返回给驱动程序和用户界面 (UI)。