Лучшее понимание связи между YARN и Spark - PullRequest
0 голосов
/ 14 сентября 2018

Я бы хотел лучше понять обмен информацией между YARN и Spark.Например:

  1. Что происходит с момента запуска задания Spark до выделения ресурсов YARN?
  2. Что происходит, когда задание Spark запрашивает ресурсы больше, чем этодоступно с YARN?
  3. Что происходит, когда задание Spark запрашивает ресурсы, превышающие емкость кластера?

1 Ответ

0 голосов
/ 15 сентября 2018

Шаги, выполняемые при запуске spark-submit в режиме клиента Yarn -

  1. Драйвер Spark внутренне вызывает метод Client class submitApplication. Это отправляет приложение Spark в кластер YARN (то есть в YARN ResourceManager) и возвращает ApplicationId приложения.

  2. После этого spark использует application_id, сгенерированный на шаге 1, и вызывает метод createContainerLaunchContext. Этот метод создает запрос YARN ContainerLaunchContext для YARN NodeManager для запуска ApplicationMaster (в контейнере).

  3. Шаг 2 отвечает за запуск ApplicationMaster для приложения. Если у кластера нет ресурсов для запуска AM, то произойдет сбой, и драйвер отключится с исключением. Как только AM запущен и работает, он связывается с драйвером, и он работает. В этот момент приложение искровой пряжи работает и работает.

  4. После этого драйвер запрашивает ресурсы (исполнителей) для AM, который затем запрашивает то же самое для Yarn ResourceManager.

  5. Если пряжа не обладает такой большой емкостью, она даст все, что возможно, приложению Spark. Если у этого есть способность, он даст то, о чем просят.

Подробнее здесь - https://jaceklaskowski.gitbooks.io/mastering-apache-spark/yarn/spark-yarn-client.html

...