Apache flink 集群节点上的Flink作业分布

Apache flink 集群节点上的Flink作业分布,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我们有4个作业在3个节点上运行,每个节点上有4个插槽 在Flink 1.3.2上,作业平均分布在每个节点上。 升级到flink 1.5后,每个作业都在单个节点上运行(如果没有剩余插槽,则会结转到另一个节点) 有没有办法回到均匀分布? 作业的负载不均匀,这导致某些节点比其他节点工作更努力 我从弗林克邮件列表中得到的答案 嗨,沙查尔 Flink 1.5增加了资源弹性。这意味着弗林克 现在可以在群集管理框架上分配新容器 像纱线或中间纱。由于这些变化(也适用于 独立模式),Flink不再为一组固定的

我们有4个作业在3个节点上运行,每个节点上有4个插槽

在Flink 1.3.2上,作业平均分布在每个节点上。 升级到flink 1.5后,每个作业都在单个节点上运行(如果没有剩余插槽,则会结转到另一个节点)

有没有办法回到均匀分布?
作业的负载不均匀,这导致某些节点比其他节点工作更努力

我从弗林克邮件列表中得到的答案

嗨,沙查尔

Flink 1.5增加了资源弹性。这意味着弗林克 现在可以在群集管理框架上分配新容器 像纱线或中间纱。由于这些变化(也适用于 独立模式),Flink不再为一组固定的 TaskManager,因为如果需要,它将启动新容器(不会 在独立模式下工作)。因此,该系统很难运行 对分配属于单个作业的插槽做出任何决定 跨越多个TMs。当你考虑这一点时会变得更加困难。 像你这样的一些工作可能会从这种策略中受益 其他人将受益于共同分配其席位。它变得更加 如果您要对多个作业执行调度wrt,则会很复杂 系统不完全了解,因为它们是 按顺序提交。因此,Flink目前假定插槽 任何TaskManager都可以满足请求

干杯,直到


出于好奇:如果某些节点具有更高的负载,为什么这很重要?从理论上讲,如果正确定义了插槽的数量,则不会过度分配工作,因此不会影响性能。对于正在使用的并行性,您似乎有太多的节点。我有4个不同的作业,例如任务管理器1上运行具有3个并行性的作业1,任务管理器2上运行具有一半负载和相同并行性的作业2,任务管理器1将使用比任务管理器2多一倍的资源量(CPU/内存),在flink 1.3.2中,所有任务管理器都使用了相同数量的资源,因为作业分布在所有任务管理器上(每个任务管理器一个)