Широковещательные переменные в Apache Spark - это механизм для совместного использования переменных между исполнителями, которые предназначены только для чтения.
Чтобы понять поведение широковещательных переменных, пожалуйста, поймите, как Жизненный цикл Spark работает
- Драйвер Spark запускается YARN
- Он создает DAG для задания
- Задание содержит сопоставление сокращающих задач
- Эти задачи сопоставления и сокращения выполняются в Executor (то есть в отдельном процессе JVM с собственным пулом потоков).
- Этот исполнитель получает свою собственную копию Broadcast-переменной во время инициализации. Переменная широковещания распространяется Spark, а не Yarn.
Шаг 3 будет повторяться задача в зависимости от объема данных или, если это задание потоковой передачи Spark, но всегда будет копию широковещательной переменной и оставайтесь с исполнителем, пока он не выйдет из строя.
Если диспетчером узлов вы ссылаетесь на узлы Spark Worker, то я не думаю, что узлам Spark Worker нужна широковещательная переменная, поэтому они могут не хранить его копии.
Диспетчер узлов (то есть Spark worker) отвечает за: - выделение необходимых ресурсов - регистрацию исполнителя в драйвере - поддержание драйвера - связь с исполнителем