Hive学习笔记 —— Hive的体系结构

1. Hive的体系结构

  • Hadoop

    用HDFS进行存储,利用MapReduce进行计算

  • 元数据存储(MetaStore)

    通常是存储在关心数据库,如mysql、derby中

Hive学习笔记 —— Hive的体系结构

在Hive执行HQL语句,其HQL语句会被解析成一个MapReduce作业,并提交到Hadoop集群上进行运行,得到的结果返回给客户端程序,这个过程主要是由JobTracker进行任务调度。

2. Hive的体系结构之元数据

Hive的元数据

元数据与表中存储的具体数据无关,反映的是表本身的信息,这种信息就是元信息,即元数据。

  • Hive将元数据存储在数据库中(metastore),支持mysql、derby、oracle等数据库

    默认采用derby数据库来存储Hive的元数据

  • Hive中的元数据包括表的名字、表的列和分区及其属性、表的属性(是否为外部表等)、表的数据所在目录等
    Hive学习笔记 —— Hive的体系结构
    图中的左边为存储在hive中的数据表,右边为相应的数据表的元数据信息。

3. Hive的体系结构之HQL的执行过程

举例:一条HQL语句如何在hive中进行查询

在hive中,提供了三个组件来帮助我们工作,即解释器、编译器、优化器

解析器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划(Plan)的生成。生成的查询计划存储在HDFS中,并在随后由MapReduce调用执行。

Hive学习笔记 —— Hive的体系结构

执行计划,类似于javac命令,将.java的源文件编译成 .class文件,最后执行的就是 .class 这个文件

连接oracle数据库

Hive学习笔记 —— Hive的体系结构

查询10号部门的员工信息

生成执行计划

Hive学习笔记 —— Hive的体系结构
Hive学习笔记 —— Hive的体系结构
(由于没有对部门创建索引,所以需要进行全表扫描)

全表扫描的代价会相对较高。

基于部门号创建索引

Hive学习笔记 —— Hive的体系结构

重新生成执行计划

Hive学习笔记 —— Hive的体系结构

重新查看该select的执行计划

Hive学习笔记 —— Hive的体系结构
(会根据索引进行扫描)