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

113 阅读2分钟

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

这是我参加青训营的第6天

1.1 MapReduce概述

Map阶段:是在单机上对一小块数据进行处理的过程。
Shuffle阶段:在map阶段的基础上,进行数据移动。(把相同颜色的数据放到一起)
Reduce阶段:对移动的数据进行处理,依然是在单机上处理一小份数据。

1.4 Shuffle:会产出M*R次网络连接; 有大量数据移动; 数据在移动和计算的过程中存在丢失的风险; 可能存在大量的排序操作; 数据在处理和移动的过程中,存在序列化和反序列化操作; 数据压缩。

2.1 Shuffle算子分类:repartition;ByKey;join;Distinct.
2.2算子内部的依赖关系。

image.png

2.21 ShuffleDependency构造

1.Key-value RDD
2.Partitioner:给定一个key时产生一个特定的分区。
3.Serializer:将一段对象映像为二进制的数据流/将二进制的数据流映射为一段对象
4.Optional key ordering:key不需要排序的falg
5.Optional Aggregator
6.mapsidecombine falg

3.1Hash Shuffle-写数据

每个partition会映射到一个独立的文件中,写满后file到磁盘中,会生成M*R个文件。
优化后,每个partition会映射到文件片段中。

3.2 Sort shuffle-写数据

不再给每个partition一个sorter,所有的的数据都写到一个map task里,当内存满了的时候通过排序,将相同的partition数据放到一起。

3.3 Shuffle-读数据

每个reduce task分别获取所有map task生成的属于自己的片段。

3.4 Shuffle过程的触发流程

当执行collect时会触发Shuffle。

image.png绿色的线不需要cpu参与;红色的线cpu直接参与。 应用:合并文件;发送文件。(不需要将文件拷贝到用户端,直接将文件消息发送到网卡)

image.png3.11 Shuffle优化 避免使用Shuffle;使用broadcast代替join;使用map-side预聚合算子。

3.13 Shuffle倾斜优化 影响:作业运行时间变长;Task OOM导致作业失败。 处理办法:提高并行度

image.png

4.Push Shuffle 要解决大量随机读的问题

image.png

以上就是我本次笔记的主要内容,不少知识点是第一次接触,用自己的话还没办法总结,就直接上图了,本次编辑是为了提醒自己日后回来复习笔记的。