hive编译、调度执行原理和Join、group by、distribute by及排序原理

5 篇文章 0 订阅
4 篇文章 2 订阅

目录

一、hive编译和执行

1.1 hive系统架构

1.2 hive编译过程

1.3 hive查询执行流程

二、job调度

三、job执行引擎(MapReduce原理)

四、核心算子原理

4.1 Hive join原理

4.2 Hive group by原理

4.3 Hive distribute by 原理

4.4 Hive 排序原理


本文首先介绍hive系统架构、编译过程和查询执行流程,接下来介绍hive编译形成的MRjob调度过程和MR原理,最后介绍了常见算子Join、group by、distribute by及排序的原理。

一、hive编译和执行

1.1 hive系统架构

1.2 hive编译过程

1.3 hive查询执行流程

二、job调度

Application在Yarn中的执行过程,如需了解详细执行过程请点击:Yarn的执行过程细分

三、job执行引擎(MapReduce原理)

MapReduce过程详解及其性能优化

Hadoop作业称为Job,Job分为Map、Shuffle和Reduce阶段,MAP和Reduce的Task都基于JVM进程运行的。
MAP阶段:从HDFS读取数据,split文件产生task,通过对应数量的Map处理,map输出的每一个键值对通过key的hash值计算一个partition,数据通过环形缓冲区,sort、spill、merge生成data和index文件;
Reduce阶段:reduce通过Shuffle Copy属于自己的那部分数据,然后sort、spill、merge形成一个大文件,调用reduce函数进行处理。

四、核心算子原理

4.1 Hive join原理

join原理--MapJoin

join原理--Reduce Join,又叫Common Join

1. Map阶段:构建(key(tag),value),key这里后面的数字是tag,后面在reduce阶段用来区分来自于那个表的数据,对key求hashcode设为hivekey;
2. Shuffle阶段:如果key在不同机器上,会通过网络传输把hivekey相同的数据汇集到一台机器;
3. Reduce阶段:把tag=1的内容,都加到tag=0的后面,合并输出。

Hadoop权威指南实现方式

4.2 Hive group by原理

默认设置了hive.map.aggr=true,会在mapper端先group by一次,最后把结果merge起来,为了减少reducer处理的数据量。

4.3 Hive distribute by 原理

只有一个distinct实现原理如下图:

有多个distinct字段,有两种实现方式,第一种同上,第二种对不同distinct字段编号膨胀,group by字段作为partition key,最后在reduce阶段保存LastKey区分不同的key。

4.4 Hive 排序原理

order by 是全局排序,可能性能会比较差,一个reduce;
sort by分区内有序,往往配合distribute by来确定该分区都有那些数据;
distribute by确定了数据分发的规则,满足相同条件的数据被分发到一个reducer;
cluster by当distribute by和sort by字段相同时,可以使用cluster by代替distribute by和sort by,但是cluster by默认是升序,不能指定排序方向。

 

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值