图7.2 描述了Hive 的工作原理。

图7.2 Hive 的工作原理图
图7.2 中各步骤说明如下:
(1)Execute Query
用户通过Hive 接口(如命令行或Web 接口)发送查询任务给驱动程序。
(2)Get Plan
编译器获得该用户的任务Plan,对查询进行分析。
(3)Get MetaData
编译器根据用户任务发送元数据请求到元数据库,去获取需要的Hive 的元数据信息。
(4)Send MetaData
元数据库发送元数据给编译器。编译器得到元数据信息后,对任务进行编译。先将HiveQL 转换为抽象语法树,进而转换成查询块,然后将查询块转化为逻辑查询计划,并重写逻辑查询计划,将其转换为物理计划,最后进行调优,选择最佳的策略。
(5)Send Plan(https://www.xing528.com)
编译器重新发送计划给驱动程序。到此为止,查询分析和编译完成。
(6)Execute Plan
驱动程序发送执行计划到执行引擎。
(7)Execute Job
在Hive 内部,执行作业的过程实际上是一个MapReduce 工作。执行引擎发送作业给Job Tracker,NameNode 将作业分配给数据节点的Task Tracker,执行Map 和Reduce 工作。任务会直接读取HDFS 中的文件进行相应的操作。
(8)MetaData Ops
执行引擎可以通过Meta Store 执行元数据操作,这里的操作与第(7)步骤同时执行。
(9)Fetch Results
执行引擎接收来自数据节点的结果。
(10)Send Results
执行引擎发送结果给驱动程序。
(11)Send Results
驱动程序将结果返回给用户。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
