Spark SparkOutOfMemoryError, несмотря на то, что память каждой задачи больше, чем ввод - PullRequest
0 голосов
/ 29 сентября 2019

Я использую 10 r4.8xlarge с 32 кодами и 244 ГБ памяти и 100 ГБ SSD, мой ввод составляет 100 22 ГБ текстовых файлов.

Ниже приведены параметры моего исполнителя

 --num-executors 59  --executor-cores 5 --executor-memory 37g

Я положилexecutor-cores 5, потому что кажется, что люди рекомендуют значение по умолчанию 5, а num-executors - floor(32/5) * 10 - 1 executor-memory - (244 / floor(32/5)) (1 - 0.07), как рекомендуется в этом руководстве по настройке

Использование вышеуказанногоКонфигурация, которую я получаю

org.apache.spark.memory.SparkOutOfMemoryError: error while calling spill() on 
org.apache.spark.shuffle.sort.ShuffleExternalSorter@5eced6cb : No space left on device

Что соответствует этому коду

    return spark.sparkContext
    .textFile(myInputDir)
    .repartition(15800) // experimentally tested to be a good partition base on 1 file, 1 file the best repartition is 3000

Поскольку каждая задача получает 37 ГБ, а это более 22 ГБ, я немного запутался в том, как может достичь искра SparkOutOfMemoryError как просто чтение и перераспределение его на другие узлы.

Может кто-нибудь указать мне направление?

1 Ответ

0 голосов
/ 29 сентября 2019

Перестановка всегда включает запись на диск, если вы не используете какой-либо слой в памяти (например, apache ignite)
В вашей ошибке четко указано No space left on device, рассмотрите возможность увеличения емкости диска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...