Перемещается ли широковещательная переменная в Spark каждому исполнителю или каждому nodemanager в YARN? - PullRequest
0 голосов
/ 30 мая 2020

В YARN как широковещательная переменная распределяется по узлам. Я не понимаю, идет ли он каждому исполнителю в Nodemanager или копируется только на каждый диспетчер узлов в кластере.

Пожалуйста, дайте мне знать об этом. Заранее спасибо.

1 Ответ

1 голос
/ 30 мая 2020

Широковещательные переменные в Apache Spark - это механизм для совместного использования переменных между исполнителями, которые предназначены только для чтения.

Чтобы понять поведение широковещательных переменных, пожалуйста, поймите, как Жизненный цикл Spark работает

  1. Драйвер Spark запускается YARN
  2. Он создает DAG для задания
  3. Задание содержит сопоставление сокращающих задач
  4. Эти задачи сопоставления и сокращения выполняются в Executor (то есть в отдельном процессе JVM с собственным пулом потоков).
  5. Этот исполнитель получает свою собственную копию Broadcast-переменной во время инициализации. Переменная широковещания распространяется Spark, а не Yarn.

Шаг 3 будет повторяться задача в зависимости от объема данных или, если это задание потоковой передачи Spark, но всегда будет копию широковещательной переменной и оставайтесь с исполнителем, пока он не выйдет из строя.

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

Диспетчер узлов (то есть Spark worker) отвечает за: - выделение необходимых ресурсов - регистрацию исполнителя в драйвере - поддержание драйвера - связь с исполнителем

...