1

我已经实现了打开固定 UDP 端口并监听它的源。因此,我想每个任务管理器只运行一个源(在我的情况下,我每个节点运行一个任务管理器),因为过度java.net.BindException: Address already in use会引发异常。

我在测试 Apache Flink 的 HA 时注意到了这个问题。当我关闭一个任务管理器时,Apache Flick 开始尝试在一个节点上运行具有相同端口的两个源。

那么,如何为每个任务管理器(或每个集群节点)运行一个源?

4

1 回答 1

1

目前不可能动态地强制在每个TaskManager. 您可以通过将槽数设置为 来避免将多个源任务安排到同一台机器上1。但是,如果您丢失了一台机器并且没有备用机器TaskManager,那么您将没有足够的插槽来重新启动作业。

或者,您可以编写源代码,使其更具弹性。例如,如果源无法绑定到指定端口,您可以简单地停止它们。鉴于没有其他程序可以绑定到该端口,那么您就知道已经有另一个源任务使用来自该端口的数据。

于 2016-03-22T14:26:16.070 回答