如何为每个任务管理器(或每个节点)运行一个源



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

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

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

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

或者,您可以编写源,使其更具弹性。例如,如果源无法绑定到指定的端口,则可以简单地停止源。假设没有其他程序可以绑定到该端口,则您知道已经有另一个源任务使用此端口中的数据。

最新更新