924060929 commented on PR #63366: URL: https://github.com/apache/doris/pull/63366#issuecomment-4714370758
@BiteTheDDDDt (放到顶层,代码行上的线程回复你那边一直没刷出来——我之前误删了发到 thread 根上的那条,留下的是回复到子评论上的、GitHub UI 渲染不出来,抱歉) > 我没懂如果fe一开始就把所有local exchange规划好,所有算子的并行度规划好,直接下发。be为什么需要_create_deferred_local_exchangers和_propagate_local_exchange_num_tasks? > > 这个是现在设计出来就是要先做折中方案的,还是可以直接一把做全面?_propagate_local_exchange_num_tasks和_create_deferred_local_exchangers这两块新增的应该不是为了灰度/回滚吧。 是的,这两块不是为了灰度/回滚——是 FE 接管 local exchange 的**当前折中**,不是一步到位。 要让 FE 把"每个算子的并发"也规划好直接下发,本质上需要 FE 自己切 pipeline、自己控制每条 pipeline 的并发(`num_tasks` 是 pipeline 粒度的,只在 pipeline 边界即 local exchange / pipeline breaker 处变化),BE 就不再规划 pipeline 了。那等于把 BE 的整套 pipeline 构建(`_build_pipeline`、pipeline-breaker 判定、`num_tasks` 推导、dependency 接线,还要兼顾 spill / runtime filter / shared state)搬到 FE,并改 thrift 契约携带完整 pipeline 结构——战线太长、风险太大。这套 FE 近似等价实现已经做了大半年、近 1 万行代码,没法一把全做。 所以现状是:FE 规划 LE 的**位置/类型/分布**(决定 plan 正确性,过去正是 BE/FE 分歧 bug 的根源),`enable_local_shuffle_planner=true` 时 BE 的 `_plan_local_exchange` 整个跳过;但每条 pipeline 的 `num_tasks` 仍由 BE 的 `_propagate_local_exchange_num_tasks` 拓扑推导,`_create_deferred_local_exchangers` 因为 exchanger 的 `num_partitions` 要等 `num_tasks` 定了才能建、所以延后创建。终态是 FE 连 `num_tasks` 也算好下发、BE 的 propagate 退化成 assert(只校验)——那是后续单独的大改。 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
