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

1. Hive的体系结构

  • Hadoop

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

  • 元数据存储(MetaStore)

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

Hive学习笔记 —— Hive的体系结构_第1张图片

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

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

Hive的元数据

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

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

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

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

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

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

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

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

Hive学习笔记 —— Hive的体系结构_第3张图片

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

连接oracle数据库

Hive学习笔记 —— Hive的体系结构_第4张图片

查询10号部门的员工信息

生成执行计划

在这里插入图片描述
Hive学习笔记 —— Hive的体系结构_第5张图片
(由于没有对部门创建索引,所以需要进行全表扫描)

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

基于部门号创建索引

在这里插入图片描述

重新生成执行计划

在这里插入图片描述

重新查看该select的执行计划

Hive学习笔记 —— Hive的体系结构_第6张图片
(会根据索引进行扫描)

你可能感兴趣的:(Hive)