ShuffledWriter流程
2021-12-25 12:11:16 4 举报
ShuffleWriter流程
作者其他创作
大纲/内容
iter.next -> writer
client
rpcHandler = new NettyBlockRpcServer
区分是不是local的
构造的时候调用:initialize()
NettyBlockTransferService每一个节点都会有的服务
OpenBlocks
interruptableIter
iterruptableIter
NettyBlockRpcServer
results将来next()中每次迭代take出来一个
read()
HadoopRDD
getReader
curBlocks面向一个Executor(一个物理机上可能有多个Executor,端口号不一样)
ShuffleBlockFetcherIterator
aggregatedIter
aggregator.isDefined
receive()case openBlocks
FetchRequesttargetRequestSize48M/5
sendRpc()
把拉取的结果填充到result中
wrappedStreams
compute
splitLocalRemoteBlock()
sendRequest()
src->iterreader
metricIter
fetchUpToMaxBytes()
为什么会有shuffle?1. 改变分区数量、并行度2. aggregate3. keyOrdering
Netty
fetchBlocks
localBlocks
fetchLocalBlocks
remoteRequest
resultIter
BlockStoreShuffleReader
mapSide
把本地的数据填充到result中
1. 生成迭代器
SortShuffleManager
keyOrdering
ShuffleHandle
blockManager.getBlockData()
aggregate->combine三个函数:1. 第一条记录2. 后续记录3. 合并溢写map端肯定有3,但是不是有1、2就不一定了
remoteBlocks
recordIter
shuffle readerShuffledRDD
收藏
0 条评论
回复 删除
下一页