Задания Spark, похоже, используют только небольшое количество ресурсов - PullRequest
2 голосов
/ 25 июня 2019

Пожалуйста, потерпите меня, потому что я все еще новичок в Spark.

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

Кластер - это 1 + 16, 8 ядер / 40 ГБ памяти / 1 ТБ на каждый узел.

Возможно, я что-то неправильно понимаю или неправильно что-то делаю, но в настоящее время у меня запущено 5 заданий одновременно, и пользовательский интерфейс Spark показывает, что используются только 34/128 vcore, и они не распределены равномерно (Задания выполнялись одновременно, но распределение - 2/7/7/11/7. Для каждого работающего контейнера выделено только одно ядро.

Я использовал флаги --executor-cores 4 и --num-executors 6, которые, похоже, ничего не изменили.

Может ли кто-нибудь предложить некоторую информацию / ресурсы о том, как я могу настроить эти задания для использования всех доступных ресурсов?

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Мне удалось решить эту проблему - у меня не было ограничений на использование памяти, поэтому выглядело так, как будто вся память была выделена только для 2 ядер на узел.

Я добавил свойство spark.executor.memory=4G и перезапустил задание, оно сразу выделило 92 ядра.

Надеюсь, это поможет кому-то еще!

0 голосов
/ 25 июня 2019

Конфигурации Dataproc по умолчанию должны учитывать количество исполнителей.Dataproc также включает динамическое распределение, поэтому исполнители будут распределяться только в случае необходимости (согласно Spark).

Spark не может распараллелить сверх количества разделов в наборе данных / RDD.Вам может потребоваться установить следующие свойства, чтобы получить хорошее использование кластера:

  • spark.default.parallelism: количество выходных разделов по умолчанию для преобразований в RDD (если явно не установлено)
  • spark.sql.shuffle.partitions: количество выходных разделов из агрегатов с использованием SQL API

В зависимости от вашего случая может иметь смысл явно установить количество разделов для каждой операции.

...