Spark部分:Hash shuffle 和sort shuffle的区别,以及产生磁盘小文件的个数

Hash shuffle和sort shuffle的区别:

Hash shuffle:

产生的磁盘小文件的个数为maptask*reducetask

每个分区是一个task

磁盘小文件多,I/O增多,产生的GC会增多。

这种shuffle产生的磁盘小文件,容易导致OOM

 

这种模式不单单产生的磁盘小文件比较多,而且占用内存也比较多。

我们应该降低这种磁盘之间的接触。

Hash shuffle的优化机制

两个task共用一个buffer缓冲区

 

sort shuffle:

Spark1.6之前用hash shuffle,在spark1.6之后使用sort shuffle

Sort shuffle的两种机制:

估算,去要内存5.01*2-5

要不到的时候就去排序

最终溢写的小的磁盘小文件合并成为了一个大的磁盘小文件

 

当不需要排序的时候,默认使用Bypass机制

 

bypass运行机制的触发条件:

Shuffle reduce task 数量小于spark.shuffle .sort.bypassMerge Threadshold参数的值

小于200,不开启,溢写磁盘不需要排序

小于等于的时候是开启的。

优化机制产生的磁盘小文件的个数:C*R

Hash shuffle:产生的磁盘小文件:M*R

Sort shuffle产生的磁盘小文件的个数为:2*M

Bypass机制产生的磁盘小文件的个数为:2*M

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值