2019-04-14 15:50:06 +08:00

58 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 数据仓库——Hive
<nav>
<a href="#一简介">一、简介</a><br/>
<a href="#二Hive的体系架构">二、Hive的体系架构</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#21-command-line-shell--thriftjdbc">2.1 command-line shell & thrift/jdbc</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#22-Metastore">2.2 Metastore</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#23-执行流程">2.3 执行流程</a><br/>
</nav>
## 一、简介
Hive构建在Hadoop之上的可以将结构化的数据文件映射成表并提供类SQL查询功能分析查询SQL语句被转化为MapReduce任务在Hadoop框架中运行。
**特点**
1. 简单、容易上手提供了类似sql查询语言hql使得精通sql 但是不了解 Java 编程的人也能很好的进行大数据分析;
2. 其执行延迟高,不适合做实时数据的处理,但其适合做海量数据的离线处理;
3. 灵活性高,可以自定义用户函数(UDF)和自定义存储格式;
4. 为超大的数据集设计的计算存储扩展能力基于HadoopMR计算HDFS存储集群扩展容易;
5. 统一的元数据管理可与prestoimpalasparksql等共享数据详见下文
## 二、Hive的体系架构
<div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/hive体系架构.png"/> </div>
### 2.1 command-line shell & thrift/jdbc
我们可以用command-line shell和thriftjdbc两种方式来操作数据可以通过hive脚本的方式来操作也可以通过服务器通过thrift协议按照编译jdbc的方式就能够完成对hive里面的数据进行相应的操作。
### 2.2 Metastore
hive里的表名、表结构、字段名、字段类型、表的分隔符等信息就叫做元数据。Metastore是用来存储Hive的元数据默认元数据是存储在derby关系型数据库中但使用derby时只能有一个实例也就是说不能多个命令行接口同时使用通常使用MySQL代替derby。
这里还需要说明的是hive进行的是同一的元数据管理就是说你在hive上创建了一张表然后在prestoimpalasparksql 中都是可以直接使用的同样的你在prestoimpalasparksql中创建一张表在hive中也是可以使用的。
### 2.3 执行流程
1. 客户端提交的sql后首先会通过Driver,然后通过SQL Parser进行sql解析首先把语句解析成**抽象语法树**之后才能转换成**逻辑性执行计划**
2. 接着查询优化工具Query Optimizer对我们**逻辑性执行计划**进行优化,最终再生成**物理性执行计划**physical plan
3. 在物理性执行计划中还包括序列化和反序列化SerDes用户自定义函数User Defined FunctionsUTFs
4. 把最终的物理执行计划生成**执行引擎**Execution提交到mapreduce上去执行
5. mapreduce的执行肯定有输入和输出那么这个输入输出可以是hadoop文件系统上的Hadoop Storage比如hdfshbase包括本地的文件也都是可以的。
## 参考资料
1. [Hive Getting Started](https://cwiki.apache.org/confluence/display/Hive/GettingStarted)
2. [Hive - 建立在Hadoop架构之上的数据仓库](https://zhuanlan.zhihu.com/p/29209577)