GCP Dataproc - Несогласованные метрики контейнера - пользовательский интерфейс YARN и пользовательский интерфейс Spark

У меня есть кластер GCP Dataproc с 50 рабочими (n1-standard-16 16 VCores 64 ГБ ОЗУ).

Кластер имеет планировщик емкости с калькулятором ресурсов по умолчанию.

Моя работа Spark имеет следующую конфигурацию

  • spark.executor.cores = 5
  • spark.executor.memory = 18G
  • spark.yarn.executor.memoryOverhead = 2G

Теперь, когда я вижу пользовательский интерфейс YARN, он показывает, что каждый узел имеет 2 контейнера, работающих с 1-Vcore и 20 ГБ ОЗУ, что почти делает его похожим на это spark.executor.cores не получает применяется. Для перекрестной проверки я посмотрел на Spark UI и, к моему удивлению, каждый исполнитель показал 5 ядер. Это немного смущает меня.

Кроме того, время выполнения задания (26 минут) также указывает на то, что эти 5 ядер действительно vcores, а не 5 потоков внутри 1 ядра (это только мое понимание, я могу быть совершенно не прав).

Может ли кто-нибудь помочь мне понять это?

Spark UI YARN UI

1 ответ

Решение

Сообщаемое YARN число vCores, как известно, является неправильным; это известная проблема, связанная с планировщиком емкости при использовании со Spark, но это только косметическая проблема, поскольку она работает так, как задумано в Dataproc, и предпочитает только бинарную упаковку на основе памяти и допускает переподписку vCores, если желательно для высоких -ИО рабочие места. Даже если YARN настроен на включение ядер в бинарную упаковку, он все равно не обеспечивает изоляцию процессора. Количество ядер на каждого исполнителя, указанное в пользовательском интерфейсе Spark, является правильным для доверия.

Посмотрите этот связанный ответ Stackru: Dataproc устанавливает количество vcores на контейнер исполнителя

Другие вопросы по тегам