spark smart shuffle 介绍

大家好,我是cc,今天给大家介绍一个基于阿里内部使用的spark shuffle相关优化,主要通过并行化和减少io操作来提升shuffle效率。

spark shuffle 介绍

spark shuffle 简介

spark里面支持很多操作,例如map,filter,reduceByKey,reduce等等。每个操作之后都会生成一个新的rdd,
而后生成的为子rdd,子rdd的单个partition 由 父rdd的多个partition所依赖,这样便是shuffle操作了。

spark shuffle相关源码解析

shuffle manager

org.apache.spark.shuffle.sort.SortShuffleManager
主要用来获取shuffle writer 和reader 实例

writer:

org.apache.spark.shuffle.sort.BypassMergeSortShuffleWriter
org.apache.spark.shuffle.sort.SortShuffleWriter
org.apache.spark.shuffle.sort.UnsafeShuffleWriter
以上三个都是shuffle数据写出到文件的类,
主要方法都是 public void write(Iterator<Product2<K, V>> records) throws IOException,records为maptask之后的数据
区别为
BypassMergeSortShuffleWriter 是首先创建和下游reducetask patition数相同的磁盘文件,然后将shuffle数据根据key 分区写入不同的文件中,结束后合并成一个大文件,并且有对应的索引文件标识每个partition文件的临界位置在大文件的哪个地方(偏移量)。
SortShuffleWriter 是首先有一个内存缓存区,shuffle数据往缓存区写入,然后当缓存区满了之后将缓存区数据算出reduce的partition 然后加上算出的分区号分成不同分区追加到一个大文件中,
UnsafeShuffleWriterSortShuffleWriter 类似,区别在于内存管理较好

reader

org.apache.spark.shuffle.BlockStoreShuffleReader#BlockStoreShuffleReader

resovler

org.apache.spark.shuffle.IndexShuffleBlockResolver

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值