如何在 flink 1.9.0 或最新版本中增加任务管理器的数量
How to increase number of taskmanagers in flink 1.9.0 or latest versions
我在一个flink作业中有1452个独立任务。它从卡夫卡读取。然后使用 flatmap 进行一些转换,然后在 hdfs 文件中下沉。 Kafka 和 flatmap 的并行度均为 20,我有 1450 个独立的接收器,每个接收器的并行度均为 1。这里的最大并行度为 20。当我为每个任务管理器使用 4 个插槽时,Flink 仅创建 5 个任务管理器。由于作业中的总任务数非常高,我需要创建更多任务管理器。
截至目前,我正在为其中一个接收器任务提供更多并行度 (100),以便我获得所需数量的任务管理器(这不是正确的方法),但它会导致所有接收器任务(除了带有100 个任务槽)仅在一个任务管理器上创建,剩余的任务管理器被其他任务使用。
所以我需要一些方法来在 fink 中实例化所需数量的任务管理器,并需要一些方法将接收器任务分配到所有任务管理器中。
隔离槽并强制 YARN 提供额外的任务管理器和槽的最简单方法是对要隔离的操作使用 Slot Sharing Groups。默认情况下,所有操作都放入 default
插槽共享组,因此您的所有任务共享同一个插槽。
要做到这一点,只需在您要隔离的操作员之后为不同的作业指定不同的槽共享组:
strean
.op(...)
.slotSharingGroup("job-N")
我在一个flink作业中有1452个独立任务。它从卡夫卡读取。然后使用 flatmap 进行一些转换,然后在 hdfs 文件中下沉。 Kafka 和 flatmap 的并行度均为 20,我有 1450 个独立的接收器,每个接收器的并行度均为 1。这里的最大并行度为 20。当我为每个任务管理器使用 4 个插槽时,Flink 仅创建 5 个任务管理器。由于作业中的总任务数非常高,我需要创建更多任务管理器。
截至目前,我正在为其中一个接收器任务提供更多并行度 (100),以便我获得所需数量的任务管理器(这不是正确的方法),但它会导致所有接收器任务(除了带有100 个任务槽)仅在一个任务管理器上创建,剩余的任务管理器被其他任务使用。
所以我需要一些方法来在 fink 中实例化所需数量的任务管理器,并需要一些方法将接收器任务分配到所有任务管理器中。
隔离槽并强制 YARN 提供额外的任务管理器和槽的最简单方法是对要隔离的操作使用 Slot Sharing Groups。默认情况下,所有操作都放入 default
插槽共享组,因此您的所有任务共享同一个插槽。
要做到这一点,只需在您要隔离的操作员之后为不同的作业指定不同的槽共享组:
strean
.op(...)
.slotSharingGroup("job-N")