大数据的仓库Hive原理(二)

      上次我们说到了大数据应用中的数据仓库hive,我们知道了利用hive可以更方便的处理数据,而且它的扩展性、延展性和容错性都比较好,但是它是如何利用Hql(类Sql语句)来实现数据处理的呢。

1、架构回顾

大数据的仓库Hive原理(二)_第1张图片

  • UI

      用户提交查询请求与获得查询结果。包括三个接口:命令行(CLI)、Web GUI(Hue)和客户端。

  • Driver

      接受查询请求与返回查询结果。实现了session的概念,以处理和提供基于JDBC/ODBC执行以及颉取的API。

  • Compiler

          编译器,分析查询SQL语句,在不同的查询块和查询表达式上进行语义分析,并最终通过从metastore中查找表与分区的元信息生成执行计划。

  • Metastore

      元数据储存,元数据存储在MySQL或derby等数据库中。元数据包括Hive各种表与分区的结构化信息,包括列与列类型信息,序列化器与反序列化器,从而能够读写hdfs中的数据。

  • Execution Engine

      执行引擎,执行由compiler创建的执行计划。此计划是一个关于阶段的有向无环图。执行引擎管理不同阶段的依赖关系,通过MapReuce执行这些阶段。

2、编译流程

Parser:分析器,将SQL转换成抽象语法树。
Semantic Analyzer:语义分析,将抽象语法树转换成查询块。
Logic Plan Generator:逻辑查询计划生成器,将查询块转换成逻辑查询计划,该计划是一棵操作符树。
LogicalOptimizer:重写逻辑查询计划。
Physical Plan Generator:物理查询计划生产器,将逻辑计划转成一些列的M/R jobs。
PhysicalOptimizer:选择最佳Join策略。

3、工作流程

大数据的仓库Hive原理(二)_第2张图片

1 Execute Query

      Hive接口,如命令行或Web UI发送查询驱动程序(任何数据库驱动程序,如JDBC,ODBC等)来执行。

2   Get Plan

      在驱动程序帮助下查询编译器,分析查询检查语法和查询计划或查询的要求。

3   Get Metadata

      编译器发送元数据请求到Metastore(任何数据库)。

4   Send Metadata

      Metastore发送元数据,以编译器的响应。

5   Send Plan

      编译器检查要求,并重新发送计划给驱动程序。到此为止,查询解析和编译完成。

6   Execute Plan

      驱动程序发送的执行计划到执行引擎。

7   Execute Job

      在内部,执行作业的过程是一个MapReduce工作。执行引擎发送作业给JobTracker,在名称节点并把它分配作业到TaskTracker,这是在数据节点。在这里,查询执行MapReduce工作。

7.1 Metadata Ops

      与此同时,在执行时,执行引擎可以通过Metastore执行元数据操作。

8   Fetch Result

      执行引擎接收来自数据节点的结果。

9   Send Results

      执行引擎发送这些结果值给驱动程序。

10  Send Results

      驱动程序将结果发送给Hive接口。


总结:

      我们从hive的简单介绍到它优缺点的理解,以及它与传统关系型数据库的区别都做了一些学习,今天我们又对它的原理做了一些简单的认识,下次我们继续深入解析hive的工作原理。

你可能感兴趣的:(hadoop,大数据)