Hive的原理—— 深入浅出学Hive

转载 2013年12月03日 13:50:16
为什么要学习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
•读取文件
MapperInputFormat
•该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】  

深入浅出学Hive——Hive原理

目录: 初始Hive Hive安装与配置 Hive 内建操作符与函数开发 Hive JDBC hive参数 Hive 高级编程 Hive QL Hive Shell 基本操作 hiv...
  • guohecang
  • guohecang
  • 2016年06月03日 10:36
  • 646

(6)Hive 高级编程——深入浅出学Hive

转自:http://sishuok.com/forum/blogPost/list/6220.html 第一部分:产生背景 产生背景 •为了满足客户个性化的需求,Hive被设计成一个很开放的系统,很多...
  • jiangxuchen
  • jiangxuchen
  • 2014年01月16日 17:12
  • 2587

(11)Hive的原理—— 深入浅出学Hive

转自:http://sishuok.com/forum/blogPost/list/6220.html 第一部分:Hive原理 为什么要学习Hive的原理 •一条Hi...
  • jiangxuchen
  • jiangxuchen
  • 2014年01月16日 17:21
  • 833

深入浅出Hive企业级架构优化、Hive Sql优化、压缩和分布

我这里有套课程想和大家分享,需要的朋友可以加我qq和我联系。QQ2059055336.   一、本课程是怎么样的一门课程(全面介绍)      1.1、课程的背景   ...
  • u013053333
  • u013053333
  • 2014年02月25日 10:14
  • 540

Hive 高级编程——深入浅出学Hive

目录: 初始Hive Hive安装与配置 Hive 内建操作符与函数开发 Hive JDBC hive参数 Hive 高级编程 Hive QL Hive Shell 基本操作 hiv...
  • uyehgdhg
  • uyehgdhg
  • 2014年01月16日 12:32
  • 838

深入浅出学Hive——Hive参数

目录: 初始Hive Hive安装与配置 Hive 内建操作符与函数开发 Hive JDBC hive参数 Hive 高级编程 Hive QL Hive Shell 基本操作 hiv...
  • guohecang
  • guohecang
  • 2016年06月03日 10:24
  • 284

深入浅出学Hive——Hive优化

目录: 初始Hive Hive安装与配置 Hive 内建操作符与函数开发 Hive JDBC hive参数 Hive 高级编程 Hive QL Hive Shell 基本操作 hiv...
  • guohecang
  • guohecang
  • 2016年06月03日 10:33
  • 343

深入浅出学Hive——Hive JDBC

目录: 初始Hive Hive安装与配置 Hive 内建操作符与函数开发 Hive JDBC hive参数 Hive 高级编程 Hive QL Hive Shell 基本操作 hiv...
  • guohecang
  • guohecang
  • 2016年06月03日 10:23
  • 241

Hive JDBC——深入浅出学Hive

第一部分:搭建Hive JDBC开发环境 搭建:Steps •新建工程hiveTest •导入Hive依赖的包 •Hive  命令行启动Thrift服务 •hiv...
  • hit_hlj_sgy
  • hit_hlj_sgy
  • 2013年08月02日 21:55
  • 939

hive 优化——深入浅出学Hive

目录: 初始Hive Hive安装与配置 Hive 内建操作符与函数开发 Hive JDBC hive参数 Hive 高级编程 Hive QL Hive...
  • u013019926
  • u013019926
  • 2013年12月04日 10:23
  • 448
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hive的原理—— 深入浅出学Hive
举报原因:
原因补充:

(最多只允许输入30个字)