flink如何将dag节点分配给不同的任务槽?

qij5mzcb  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(594)

阅读flink教程示例,我想知道flink如何将dag节点分配给flink集群中的不同任务槽。任何指示都将不胜感激。

val windowCounts = text
        .flatMap { w => w.split("\\s") }
        .map { w => WordWithCount(w, 1) }
        .keyBy("word")
        .timeWindow(Time.seconds(5), Time.seconds(1))
        .sum("count")
xdyibdwo

xdyibdwo1#

flink在调度dag时首先要做的是尽可能多地链接操作符。如果一个运算符有多个输入或在洗牌时,链通常会断开。链将在单个 TaskTaskManager 并且不涉及链式运算符之间的任何序列化。
将输入dag转换为 Tasks ,flink将通过拆分 Tasks 分为子任务。子任务接收并处理父任务输入的分区。
下一个flink将为每个子任务分配一个槽。如果为操作员启用了插槽共享(这是默认设置),则可以将来自不同操作员的子任务调度到同一个位置 Slot . 这样不仅可以更容易地对所需资源进行推理,而且可以提高资源利用率。每个子任务都由一个单独的线程执行。
你可以在这里找到更多关于Flink日程安排的信息。

相关问题