Конфигурация искры, в чем разница между SPARK_DRIVER_MEMORY, SPARK_EXECUTOR_MEMORY и SPARK_WORKER_MEMORY?

Я сделал свою работу, прочитал документацию на https://spark.apache.org/docs/latest/configuration.html

в искровой папке /conf/spark -env.sh:

  • SPARK_DRIVER_MEMORY, память для мастера (например, 1000M, 2G) (по умолчанию: 512 МБ)
  • SPARK_EXECUTOR_MEMORY, память на одного работника (например, 1000M, 2G) (по умолчанию: 1G)
  • SPARK_WORKER_MEMORY, чтобы установить, сколько полных работников памяти должны предоставить исполнителям (например, 1000 м, 2 г)

Какова связь между тремя параметрами?

Как я понимаю, DRIVER_MEMORY - это максимальный мастер памяти node/процесс может запрашивать. Но для водителя, как о множественной машинной ситуации, например. 1 мастер-машина и 2 рабочих машины, рабочая машина также должна иметь доступную память для искрового драйвера?

EXECUTOR_MEMORY и WORKER_MEMORY одинаковы для меня, просто разные имена, может ли это также объяснить?

Большое спасибо.

Ответ 1

Во-первых, вы должны знать, что 1 Рабочий (вы можете сказать, что 1 машина или 1 Рабочий Node) могут запускать несколько Исполнителей (или несколько Рабочих экземпляров - термин, который они используют в документах).

  • SPARK_WORKER_MEMORY используется только в режиме автономного развертывания
  • SPARK_EXECUTOR_MEMORY используется в режиме YARN

В автономном режиме вы устанавливаете SPARK_WORKER_MEMORY, чтобы общий объем памяти можно было использовать на одном компьютере (все исполнители на этом компьютере) для запуска ваших искровых приложений.

Напротив, в режиме YARN вы устанавливаете SPARK_DRIVER_MEMORY в память одного Исполнителя

  • SPARK_DRIVER_MEMORY используется в режиме разворота YARN, указывая память для Драйвера, который запускает ваше приложение и общается с Cluster Manager.