spark shuffle 过程分析

spark shuffle 过程分析:
一普通机制:
1,首先 reduceBykey 是会将每一个 key 对应的所有value聚合成一个value,然后生成一个rdd,元素类型是<k,v>形式,然后每一个k对应一个聚合起来的v
2,每一个k对应的v 不一定在一个节点之上,也不可能是在一个 partition中
3,聚合过程:
1),Shuffle Write 上一个map task 必须保证将自己处理的当前分区的数据相同的key写入到一个分区文件之中(有可能多个)
2),Shuddle Read:reduce task会从上一个stage所有的task所在的机器上去找属于自己的分区文件,这样保证每一个key所对应的value都汇聚到同一个节点(一般提交的节点)去处理
4,针对Shuffle 过程所产生的问题:
1,由于产生的小文件太多,造成 shuffle write写入次数过多,shuffle Read网络操作太过于频繁
2,可能导致内存不足,节点之间如果网络不稳定可能到最后网络阻塞,导致reduce重新连接

二,使用buffle缓冲区机制(哈希shuffle的优化)
1,增加了缓冲区,缓冲区的buffle个数是 reduce task个数,也就是每一个task产生的buffle都被进行共用

三,使用 SortShuffleManage机制
1,普通机制:比上一次又一次减少了生成文件的个数

2,SortShuffleManage bypass机制
1),针对不适用排序的业务场景,可以调整 bypassMergeThreshold数量达到使用这种机制的目的

 

转载于:https://www.cnblogs.com/shi-qi/articles/10546050.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值