(转载)Hive学习笔记--Hive 原理
2013-08-08 00:00
141 查看
第一部分:Hive原理
为什么要学习Hive的原理
•一条Hive HQL将转换为多少道MR作业
•怎么样加快Hive的执行速度
•编写Hive HQL的时候我们可以做什么
•Hive 怎么将HQL转换为MR作业
•Hive会采用什么样的优化方式
Hive架构&执行流程
![](http://static.oschina.net/uploads/img/201308/08085244_Vkh4.jpg)
Hive执行流程
•编译器将一个Hive QL转换操作符
•操作符是Hive的最小的处理单元
•每个操作符代表HDFS的一个操作或者一道MapReduce作业
Operator
•Operator都是hive定义的一个处理过程
•Operator都定义有:
•protected List
<Operator<?
extends Serializable
>> childOperators;
•protected List
<Operator<?
extends Serializable
>> parentOperators;
•protected boolean done; // 初始化值为false
•所有的操作构成了 Operator图,hive正是基于这些图关系来处理诸如limit, group by, join等操作
![](http://static.oschina.net/uploads/img/201308/08085244_bt0b.jpg)
Hive执行流程
•Hive通过ExecMapper和ExecReducer执行MapReduce任务
•在执行MapReduce时有两种模式
•本地模式
•分布式模式
ANTLR词法语法分析工具
•ANTLR—Another Tool for Language Recognition
•ANTLR 是开源的
•为包括Java,C++,C#在内的语言提供了一个通过语法描述来自动构造自定义语言的识别器(recognizer),编译器(parser)和解释器(translator)的框架
•Hibernate就是使用了该分析工具
Hive编译器
![](http://static.oschina.net/uploads/img/201308/08085244_TRKa.jpg)
![](http://static.oschina.net/uploads/img/201308/08085244_gQ9t.jpg)
编译流程
![](http://static.oschina.net/uploads/img/201308/08085245_Vi4e.jpg)
![](http://static.oschina.net/uploads/img/201308/08085245_ekFA.jpg)
第二部分:一条HQL引发的思考
案例HQL
•select key from test_limit
limit 1
•Stage-1
•TableScan Operator>Select Operator-> Limit->File Output Operator
•Stage-0
•Fetch Operator
•读取文件
Mapper与InputFormat
•该hive MR作业中指定的mapper是:
•mapred.mapper.class = org.apache.hadoop.hive.ql.exec.ExecMapper
•input format是:
•hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat
•该hive MR作业中指定的mapper是:
•mapred.mapper.class = org.apache.hadoop.hive.ql.exec.ExecMapper
•input format是:
•hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat
为什么要学习Hive的原理
•一条Hive HQL将转换为多少道MR作业
•怎么样加快Hive的执行速度
•编写Hive HQL的时候我们可以做什么
•Hive 怎么将HQL转换为MR作业
•Hive会采用什么样的优化方式
Hive架构&执行流程
![](http://static.oschina.net/uploads/img/201308/08085244_Vkh4.jpg)
Hive执行流程
•编译器将一个Hive QL转换操作符
•操作符是Hive的最小的处理单元
•每个操作符代表HDFS的一个操作或者一道MapReduce作业
Operator
•Operator都是hive定义的一个处理过程
•Operator都定义有:
•protected List
<Operator<?
extends Serializable
>> childOperators;
•protected List
<Operator<?
extends Serializable
>> parentOperators;
•protected boolean done; // 初始化值为false
•所有的操作构成了 Operator图,hive正是基于这些图关系来处理诸如limit, group by, join等操作
![](http://static.oschina.net/uploads/img/201308/08085244_bt0b.jpg)
Hive执行流程
操作符 | 描述 |
TableScanOperator | 扫描hive表数据 |
ReduceSinkOperator | 创建将发送到Reducer端的<Key,Value>对 |
JoinOperator | Join两份数据 |
SelectOperator | 选择输出列 |
FileSinkOperator | 建立结果数据,输出至文件 |
FilterOperator | 过滤输入数据 |
GroupByOperator | GroupBy语句 |
MapJoinOperator | /*+mapjoin(t) */ |
LimitOperator | Limit语句 |
UnionOperator | Union语句 |
•在执行MapReduce时有两种模式
•本地模式
•分布式模式
ANTLR词法语法分析工具
•ANTLR—Another Tool for Language Recognition
•ANTLR 是开源的
•为包括Java,C++,C#在内的语言提供了一个通过语法描述来自动构造自定义语言的识别器(recognizer),编译器(parser)和解释器(translator)的框架
•Hibernate就是使用了该分析工具
Hive编译器
![](http://static.oschina.net/uploads/img/201308/08085244_TRKa.jpg)
![](http://static.oschina.net/uploads/img/201308/08085244_gQ9t.jpg)
编译流程
![](http://static.oschina.net/uploads/img/201308/08085245_Vi4e.jpg)
![](http://static.oschina.net/uploads/img/201308/08085245_ekFA.jpg)
第二部分:一条HQL引发的思考
案例HQL
•select key from test_limit
limit 1
•Stage-1
•TableScan Operator>Select Operator-> Limit->File Output Operator
•Stage-0
•Fetch Operator
•读取文件
Mapper与InputFormat
•该hive MR作业中指定的mapper是:
•mapred.mapper.class = org.apache.hadoop.hive.ql.exec.ExecMapper
•input format是:
•hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat
•该hive MR作业中指定的mapper是:
•mapred.mapper.class = org.apache.hadoop.hive.ql.exec.ExecMapper
•input format是:
•hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat
相关文章推荐
- (转载)Hive学习笔记--Hive JDBC
- (转载)Hive学习笔记--Hive 高级编程
- (转载)Hive学习笔记--Hive Shell基本操作
- (转载)Hive学习笔记--Hive QL
- Hadoop学习笔记(10)-简述分布式数据仓库Hive原理
- 【转载】学习笔记之 IIS 安全 / 数字证书 / SSL 原理
- (转载)Hive学习笔记--Hive 参数
- hive学习笔记-转载
- (转载)Hive学习笔记--Hive 优化
- Hive学习笔记【转载】
- (转载)Hive学习笔记--Hive 安装与配置
- (转载)Hive学习笔记--Hive 内建操作符与函数开发
- (转载)Hive学习笔记--Hive 体系结构
- VLAN原理学习笔记
- [转载]SharePoint 2013搜索学习笔记之自定义结果源
- [javase学习笔记]-7.6 thiskeyword的原理
- JAVA 数据结构与算法学习笔记一(转载)
- MOOC人工智能原理学习笔记2
- hive学习笔记第一篇
- ctf学习笔记[转载]