我在一个flink作业中有1452个独立任务。它读自卡夫卡。然后使用平面图进行一些转换,然后放入hdfs文件中。Kafka和flatmap的并行度各为20,我有1450个独立的接收器,每个接收器的并行度为1。因为这里的最大平行度是20。当我为每个任务管理器使用4个插槽时,Flink只创建了5个任务管理器。由于工作中的总任务数量非常高,我需要创建更多的任务管理器。
到目前为止,我对其中一个接收任务赋予了更多的并行性(100(,这样我就可以获得所需数量的任务管理器(这不是一种正确的方式(,但这导致所有接收任务(除了有100个任务槽的任务(都只能在一个任务管理器上创建,而其他任务则使用重新生成的任务管理程序。
因此,我需要一些方法来实例化fink中所需数量的任务管理器,并将接收任务分配到所有任务管理器中。
隔离插槽并强制YARN提供额外任务管理器和插槽的最简单方法是为要隔离的操作使用插槽共享组。默认情况下,所有操作都被放入default
插槽共享组中,因此您的所有任务都共享同一个插槽。
要做到这一点,只需在您想要隔离的操作员之后为不同的作业指定一个不同的插槽共享组:
strean
.op(...)
.slotSharingGroup("job-N")