hadoop:MapReduce之 shuffle过程详解

shuffle概念

shuffle(洗牌之意),Shuffle描述着数据从map task输出到reduce task输入的这段过程.
官方图片
在这里插入图片描述

为什么要在map reduce 之间加shuffle?

shuffle期望:

  • 完整的从map task 端拉去数据奥reduce端
  • 在跨节点拉去数据时,减少网络传输的消耗
  • 减少磁盘io对task执行的影响

广义来说:Map的输出到Reduce输入这段称为shuffle过程,由hadoop默认执行,中间执行步骤有Combiner和Partitioner,sort和Merge。 shuffle的执行顺序是Combiner和Partitioner,sort和Merge。的过程

combiner(合并)

i.一个可选的本地reducer,可以在map阶段聚合数据
ii. 可以明显减少通过网络传输的数据量
iii. 使用combiner可以产生特别大的性能提升,并且没有副作用
iv. 不能保证执行,不能作为整个算法的一部分
vi.并不是所有情况下都能使用combiner,combiner使用于对记录汇总的场景(如求和,但是求平均数的场景就不能使用了

sort(排序)

根据哈希码值排序

按照kv键值对升序排序,结果按patition聚集
同一patition按key有序

patittioner(分区)

.均衡负载,尽量的将工作均匀的分配给不同的reduce。
  2.效率,分配速度一定要快。

merge(使..合并)

merger三种形式
i内存到内存
ii 内存到磁盘
iii磁盘到磁盘

默认情况下第一种形式不启用,让人比较困惑,是吧。当内存中的数据量到达一定阈值,就启动内存到磁盘的merge。与map 端类似,这也是溢写的过程,这个过程中如果你设置有Combiner,也是会启用的,然后在磁盘中生成了众多的溢写文件。第二种merge方式一直在运行,直到没有map端的数据时才结束,然后启动第三种磁盘到磁盘的merge方式生成最终的那个文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值