Как Flink распределяет узлы DAG по разным слотам задач? - PullRequest
0 голосов
/ 14 февраля 2019

Читая пример учебника по Flink, мне интересно, как Flink назначает узлы DAG различным слотам задач в кластере Flink.Любая указка будет принята с благодарностью.

    val windowCounts = text
        .flatMap { w => w.split("\\s") }
        .map { w => WordWithCount(w, 1) }
        .keyBy("word")
        .timeWindow(Time.seconds(5), Time.seconds(1))
        .sum("count")

1 Ответ

0 голосов
/ 15 февраля 2019

То, что Флинк пытается сделать, когда планирование DAG - это прежде всего попытка связать как можно больше операторов.Цепи обычно разрываются, если у оператора есть несколько входов или в случайном порядке.Цепочки будут выполняться в единственном Task на TaskManager и не предполагают какой-либо сериализации между связанными операторами.

После преобразования входной группы DAG в Tasks Flink будет распараллеливать группу DAG с помощьюразбиение Tasks на подзадачи.Подзадача получает и обрабатывает раздел ввода родительской задачи.

Next Flink выделит для каждой подзадачи слот.Если для операторов разрешено совместное использование слотов (что является значением по умолчанию), то подзадачи от разных операторов могут быть запланированы на один и тот же Slot.Это не только позволяет легче рассуждать о необходимых ресурсах, но и обеспечивает лучшее использование ресурсов.Каждая подзадача выполняется отдельным потоком.

Более подробную информацию о планировании работы Флинка можно найти здесь .

...