图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(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
驱动程序将结果返回给用户。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。