您的位置:首页 > 运维架构

深入浅出学Hive——Hive原理

2016-06-03 10:36 330 查看
目录:

初始Hive

Hive安装与配置

Hive内建操作符与函数开发

Hive JDBC

Hive参数

Hive高级编程

Hive QL

Hive Shell基本操作

Hive优化

Hive体系结构

Hive原理



第一部分:Hive原理

为什么要学习Hive的原理

•一条Hive HQL将转换为多少道MR作业
•怎么样加快Hive的执行速度
•编写Hive HQL的时候我们可以做什么
•Hive 怎么将HQL转换为MR作业
•Hive会采用什么样的优化方式

Hive架构&执行流程



 

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等操作



 

Hive执行流程

操作符
描述
TableScanOperator
扫描hive表数据
ReduceSinkOperator
创建将发送到Reducer端的<Key,Value>对
JoinOperator
Join两份数据
SelectOperator
选择输出列
FileSinkOperator
建立结果数据,输出至文件
FilterOperator
过滤输入数据
GroupByOperator
GroupBy语句
MapJoinOperator
/*+mapjoin(t) */
LimitOperator
Limit语句
UnionOperator
Union语句
•Hive通过ExecMapper和ExecReducer执行MapReduce任务

•在执行MapReduce时有两种模式

•本地模式

•分布式模式

ANTLR词法语法分析工具

•ANTLR—Another Tool for Language Recognition
•ANTLR 是开源的
•为包括Java,C++,C#在内的语言提供了一个通过语法描述来自动构造自定义语言的识别器(recognizer),编译器(parser)和解释器(translator)的框架
•Hibernate就是使用了该分析工具
 

Hive编译器
 


 


 
 

编译流程

 




第二部分:一条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 

 

 转载请注明出处【 http://sishuok.com/forum/blogPost/list/0/6232.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop hive