Flink задание на EMR выполняется только на одном TaskManager - PullRequest
0 голосов
/ 08 июля 2019

Я использую кластер EMR с 3 узлами m5.xlarge (1 master, 2 core) и установленным Flink 1.8 (emr-5.24.1).

На главном узле я запускаю сеанс Flink в кластере YARN с помощью следующей команды:

flink-yarn-session -s 4 -jm 12288m -tm 12288m

Это максимальное количество памяти и слотов в TaskManager, которое позволяет настроить YARN на основе выбранных типов экземпляров.

Во время запуска появляется журнал:

org.apache.flink.yarn.AbstractYarnClusterDescriptor           - Cluster specification: ClusterSpecification{masterMemoryMB=12288, taskManagerMemoryMB=12288, numberTaskManagers=1, slotsPerTaskManager=4}

Это показывает, что существует только один диспетчер задач. Также, глядя на YARN Node manager, я вижу, что на одном из узлов ядра работает только один контейнер. YARN Resource Manager показывает, что приложение использует только 50% кластера.

При текущей настройке я бы предположил, что я могу запустить задание Flink с параллелизмом, установленным на 8 (2 TaskManager * 4 слота), но в случае, если переданное задание установило параллелизм более 4, оно через некоторое время завершится неудачно, так как не удалось получить нужные ресурсы.

Если для параллелизма задания задано значение 4 (или меньше), задание выполняется так, как должно. Если посмотреть на использование ЦП и памяти в Ganglia, то видно, что используется только один узел, а другой - плоский.

Почему приложение запускается только на одном узле и как использовать другой узел? Нужно ли было настроить что-то на YARN, чтобы оно также настраивало Flink на другом узле?

В предыдущей версии Flik была опция запуска -n , которая использовалась для указания количества менеджеров задач. Опция устарела.

1 Ответ

1 голос
/ 09 июля 2019

Когда вы запускаете 'Session Cluster', вы должны увидеть только один контейнер, который используется для Flink Job Manager.Это, вероятно, то, что вы видите в диспетчере ресурсов YARN.Дополнительные контейнеры будут автоматически выделяться для менеджеров задач после отправки задания.

Сколько ядер вы видите доступным в пользовательском интерфейсе диспетчера ресурсов?

Не забывайте, что диспетчер заданий такжеиспользует ядра из имеющихся 8.

Здесь вам нужно немного поработать.Например, если бы вы установили количество слотов равным 2 на ТМ и меньше памяти на ТМ, а затем отправили задание с параллелизмом 6, оно должно работать с 3 ТМ.

...