『字节青训营-4th-大数据』L6:大数据 Shuffle 原理与实践
相关链接
🎶 学员手册:【大数据专场 学习资料二】第四届字节跳动青训营
讲真,这节课大概都听不懂(
Shuffle 概述
MapReduce 概述

Map

三张 gif
Shuffle

本质:通过哈希区别不同类型数据
Reduce

为什么 Shuffle 对性能非常重要

总结

批式计算的发展流程
Shuffle 算子
算子分类与应用


这个例子中,把一个 txt 按行分割,然后统计每个单词的个数
reduceByKey 产生 Shuffle,做的是 A + B 的操作(有很多机器)
最后 collect,返回结果
Spark 中对 Shuffle 的抽象 - 宽依赖、窄依赖


Shuffle Dependency



Shuffle 过程

Hash Shuffle
写数据

写数据优化

把每个 Partition 映射到某个文件的片段
Sort Shuffle
写数据

每个 task 只用一个文件存储真实数据
读数据

Shuffle 过程的触发流程

前 5 行只是记录计算过程,在 Collect 的时候才会进行计算
Shuffle Handle 的创建

Shuttle Handed 与 Shuffle Writer 的对应关系

Writer 实现
BypassMergeShuffleWriter

仅适用于Partition较少的情况
UnsafeShuffleWriter


SortShuffleWriter

Reader 实现
网络时序图

ShuffleBlockFetchIterator

External Shuffle Service

Shuffle 优化使用的技术
Zero Copy

Natty Zero Copy

常见问题

Shuffle 优化


Shuffle 参数优化

Shuffle 倾斜优化


案例 - 参数优化


Push Shuffle
上面讲的是 Spark 3.0 的算法
为什么要 Push Shuffle

Push Shuffle 的实现

Magnet 实现原理


Magnet 可靠性

Cloud Shuffle Service 思想

Cloud Shuffle Service 架构

Cloud Shuffle Service 写入读取



实践案例 - CSS 优化

总结

评论
GiscusTwikoo