大数据shuffle原理与实践(2) | 青训营笔记

136 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第7天

6.4 push shuffle

1.为什么要push shuffle

Avg l0 size太小,造成了大量的随机10,严重影响磁盘的吞吐

M * R次读请求,造成大量的网络连接,影响稳定性

image.png

2.push shuffle的实现

Facebook:COSCO

LinkedIn: magnet

Uber: Zeus

Alibaba:RSS

Tencent:FireStorm

Bytedance: CSS

Spark3.2:push based shuffle

3.magnet实现原理

Spark driver组件,协调整体的shuffle操作

map任务的shuffle writer过程完成后,增加了一个额外的操作push-merge,将数据复制 份推到远程shuffle服务.上magnet shuffle service是一个强化版的ESS。将隶属于同一个shuffle partition的block,会在远程传输到magnet后被merge到一个文件中

reduce任务从magnet shuffle service接收合并好的shuffle数据

image.png

bitmap:存储已merge的mapper id,防止重复merge

position offset:如果本次block没有正常merge,可以恢复到上一个block的位置

currentMapld:标识当前正在append的block,保证不同mapper的block能依次append

image.png

4.magnet可能性

如果Map task输出的Block没有成功Push到magnet上,并且反复重试仍然失败,则reduce task直接从ESS上拉取原始block数据

如果magnet上的block因为重复或者冲突等原因,没有正常完成merge的过程,则reduce task直接拉取未完成merge的block

如果reduce拉取已经merge好的block失败,则会直接拉取merge前的原始block

本质上,magnet中维护 了两份shuffe数据的副本

5.cloud shuffle service思想

image.png

6.cloud shuffle service架构

Zookeeper Workerl ist [服务发现]

CSS Worker [Partitions / Disk | Hdfs]

Spark Driver [集成启动CSS Master]

CSS Master [Shuffle 规划/统计]

CSS ShuffileClient [Write / Read]

Spark Executor [Mapper + Reducer]

image.png

cloud shuffle service写入流程

image.png

cloud shuffle service AQE

一个Partition会最终对应到多个Epoch file, 每个EPoch目前设置是512MB

image.png

7.实践案例-CSS优化

XX业务小时级任务(1 .2wcores)

混部队列2.5h ->混部队列+CSS 1.3h (50%提升)

image.png