spark源码系列文章------shuffle模块详解

简介: 一、Basic shuffle writer实现解析 在Executor上执行shuffle Map Task时,最终会调用shuffleMapTask的runTask,核心逻辑如下: 1.从sparkEnv中获得shuffleManager; 2.

一、Basic shuffle writer实现解析

在Executor上执行shuffle Map Task时,最终会调用shuffleMapTask的runTask,核心逻辑如下:

1.从sparkEnv中获得shuffleManager;

2.从manager中获得writer

3.调用RDD开始计算,运算结果通过writer进行持久化,持久化之前通过Aggregator来确定是否需要进行Map端聚合,然后将结果通过FileShuffleManager#forMapTask的方法写入,写入完成后,会将元数据信息写入MapStatus,然后下游的Task可以通过这个MapStatus取得需要处理的数据。

这样writer通过ShuffleDependency#partitioner来获得下游partition的数量,下游的每个partition都会对应一个文件,文件名字的格式为:“shuffle_”+shuffledId+"_"+mapId+"_"+reduceId。

由于每个shuffle Map Task需要为每个下游的Task创建一个单独的文件,因此文件的数量就是number(shuffle_map_task)*number(following_task)。这样会导致创建和打开许多文件。

后来spark又引入Shuffle Consolidate Writer,原理是core上的第一个Task创建一个文件,该core上的后面的Task的shuffle操作都追加写入改文件,这样文件数量number(core)*number(following_task)  。

//todo



目录
相关文章
|
27天前
|
分布式计算 监控 大数据
如何优化Spark中的shuffle操作?
【10月更文挑战第18天】
|
2月前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
48 0
|
2月前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
83 0
|
7月前
|
分布式计算 Java Hadoop
Spark3.3.0源码编译补充篇-抓狂的证书问题
Spark3.3.0源码编译补充篇-抓狂的证书问题
44 0
|
7月前
|
分布式计算 Java 测试技术
肝Spark源码的若干骚操作
肝Spark源码的若干骚操作
51 0
|
7月前
|
分布式计算 Java 程序员
Spark3.0源码编译打包
Spark3.0源码编译打包
40 0
|
7月前
|
分布式计算 Spark 索引
Spark学习---day07、Spark内核(Shuffle、任务执行)
Spark学习---day07、Spark内核(源码提交流程、任务执行)
113 2
|
7月前
|
分布式计算 监控 Java
Spark学习---day06、Spark内核(源码提交流程、任务执行)
Spark学习---day06、Spark内核(源码提交流程、任务执行)
106 2
|
7月前
|
存储 Java 关系型数据库
【Kafka+Flume+Mysql+Spark】实现新闻话题实时统计分析系统(附源码)
【Kafka+Flume+Mysql+Spark】实现新闻话题实时统计分析系统(附源码)
162 1
【Kafka+Flume+Mysql+Spark】实现新闻话题实时统计分析系统(附源码)
|
7月前
|
分布式计算 Java 调度
Spark中的Shuffle过程是什么?为什么它在性能上很关键?
Spark中的Shuffle过程是什么?为什么它在性能上很关键?
261 0

热门文章

最新文章