开发者社区> 问答> 正文

处理splitLocalRemoteBlocks的逻辑步骤是什么?

处理splitLocalRemoteBlocks的逻辑步骤是什么?

展开
收起
游客fbdr25iajcjto 2021-12-06 22:01:42 552 0
1 条回答
写回答
取消 提交回答
  • 1) 遍历已经按照BlockManagerId分组的blockInfo,如果blockInfo所在的Executor与当前Executor相同,则将它的BlockId存入localBlocks;

    否则,将blockInfo的BlockId和size累加到curBlocks,将blockId存入remoteBlocks,curRequestSize增加size的大小,每当curRequestSize >= targetRequestSize,则新建FetchRequest放入remoteRequests,并且为生成下一个FetchRequest做一些准备(如新建curBlocks,curRequestSize置为0)。

    2) 遍历结束,curBlocks中如果仍然有缓存的(BlockId,Long),新建FetchRequest放入remoteRequests。此次请求不受maxBytesInFlight和targetRequestSize的影响。

    2021-12-06 22:02:28
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
面向失败设计 立即下载
动态、高效,蚂蚁动态卡片的内核逻辑 立即下载
fibjs 模块重构从回调到协程--陈垒 立即下载