文章目录


Shuffle 文件寻址 进程

1) MapOutputTracker

MapOutputTracker是Spark架构中的一个模块,是一个主从架构。管理磁盘小文件的地址

MapOutputTrackerMaster 是主对象,存在于 Driver 中。

MapOutputTrackerWorker 是从对象,存在于 Excutor 中。

2) BlockManager

BlockManager 块管理者,是 Spark 架构中的一个模块,也是一个 主从架构。

BlockManagerMaster,主对象,存在于 Driver 中。 BlockManagerMaster 会在集群中有用到广播变量和缓存数据,或者删除缓存数据的时候,通知 BlockManagerSlave 传输或者 删除数据。

BlockManagerWorker 从对象,存在于 Excutor 中。

BlockManagerWorker 会与 BlockManagerWorker 之间通信,无论在 Driver 端的 BlockManager 还是在 Excutor 端的 BlockManager 都含有四个对象:

① DiskStore:负责磁盘的管理

② MemoryStore:负责内存的管理

③ ConnectionManager:负责连接其他的

BlockManagerWorker

④ BlockTransferService:负责数据的传输

文件寻址图

SparkShuffle的文件寻址_SparkShuffle

Shuffle 文件寻址流程

a) 当 map task 执行完成后,会将 task 的执行情况和磁盘小文件的 地址封装到 MpStatus 对象中,通过MapOutputTrackerWorker 对象向 Driver 中的MapOutputTrackerMaster 汇报

b) 在所有的 map task 执行完毕后,Driver 中就掌握了所有的磁盘 小文件的地址。

c) 在 reduce task 执行之前,会通过 Excutor 中MapOutPutTrackerWorker 向 Driver 端的 MapOutputTrackerMaster 获取磁盘小文件的地址。
d) 获取到磁盘小文件的地址后,会通过 BlockManager 中的 ConnectionManager 连接数据所在节点上的 ConnectionManager,然后通过 BlockTransferService 进行数据的传输。

e) BlockTransferService 默认启动 5 个 task 去节点拉取数据。默认情况下,5 个 task 拉取数据量不能超过 48M。