- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
Spark Shuffle原理&优化
展开查看详情
1 .Spark Shuffle 及优化介绍 liyuanjian@baidu.com Spark-rd@baidu.com
2 .ShuffleManager Shuffle 入口,横跨整个 Application 生命周期, Spark Context 单例
3 .ShuffleDependency Shuffle 关系的定义, Shuffle 初始化
4 .ShuffleHandle 具体 Shuffle 模型的抽象,与对应实现强耦合
5 .ShuffleHandle & ShuffleWriter & ShuffleReader ShufleHandle ShuffleWriter ShuffleReader 说明 BaseShuffleHandle SortShuffleWriter BlockStoreShuffleReader 默认通用的Shuffle方式,使用ExternalSorter完成对aggregator的支持 BypassMergeSortShuffleHandle BypassMergeSortShuffleWriter Hash Based Shuffle Writer,对文件数消耗较大,shuffle规模较小时使用 SerializedShuffleHandle UnsafeShuffleWriter 简单 Shuffle 场景的优化方案,使用 kernal zero-copy 且规避 java 对象带来的额外开销
6 .ShuffleHandle BypassMergeSortShuffleHandle 旧版 Spark 中的 Hash Based Shuffle Writer+Consolidate BaseShuffleHandle 当前 默认的 sortBasedShuffle 使用 ExternalSorter 写出 ShuffleMapOutput ,用默认的 ShuffleReader 进行下游处理 SerializedShuffleHandle Tungsten 计划中的 一部分 引入 一种新的 Shuffle 算法,从而降低 shuffle 过程中的内存用量和 Java 对象的额外开销
7 .BaseShuffleHandle vs SerializedShuffleHandle Same UnsafeShuffleWriter 与 SortShuffleWriter 输出结构完全一致,复用 ShuffleReader Diff record 级别的排序,使用 ShuffleExternalSorter 使用 zero-copy 的方式做 filemerge , mergeSpillsWithTransferTo 内完成
8 .其他数据结构 Spillable & MemoryConsumer Aggregator & ExternalAppendOnlyMap ExternalSorter ShuffleBlockFetcherIterator & ShuffleClient
9 .Shuffle 优化 https:// github.com /apache/spark/pull/19745