Spark shuffle中 reduce task是怎么拉取数据的?

Spark shuffle中 reduce task是怎么拉取数据的?_第1张图片
reduce task 拉取数据

1.map task 执行完毕后会将计算状态以及磁盘小文件位置等信息分装到mapStatue对象中,然后由本进程中的MapOutPutTrackerWorker对象将mapStatus对象发送给Driver进程的MapOutPutTrackerMaster对象

2.在reduce task开始执行之前会先让本进程中的MapOutputTrackerWorker向Driver进程中的MapoutPutTrakcerMaster发动请求,请求磁盘小文件位置信息。

3.当所有的Map task执行完毕后,Driver进程中的MapOutPutTrackerMaster就掌握了所有的磁盘小文件的位置信息。此时MapOutPutTrackerMaster会告诉MapOutPutTrackerWorker磁盘小文件的位置信息.

4.完成之前的操作之后,就由ConnectionManager来链接node1和node2之间的信息。由BlockTransforService去Executor0所在的节点拉数据,默认会启动五个子线程。每次拉取的数据量不能超过48M(reduce task每次最多拉取48M数据,将拉来的数据存储到Executor内存的20%内存中).


注意
1.拉取数据的过程也是一个Master-Slave架构
Master:Driver进程中BlockManagerMaster:管理全局磁盘小文件个数
Driver:Executor进程中Block'Manager'Slave:管理局部磁盘小文件个数
2.BlockManager中几个常用的类
DiskStore:负责磁盘上数据的读写
MemStore:负责内存上数据的读写
ConntectManager:负责建立连接
BlockTransfoeService:负责数据的传输

你可能感兴趣的:(Spark shuffle中 reduce task是怎么拉取数据的?)