Как определить лучшую настройку для искры на одном узле?

У меня есть данные объемом 55 ГБ, которые необходимо обработать. Я запускаю Spark-shell на одной машине с 32 ядрами и 180 ГБ ОЗУ (без кластера). Поскольку это один узел, и драйвер, и рабочие находятся в одном процессе JVM и по умолчанию используют 514 МБ.

Я установил spark.driver.memory на 170G

spark-shell  --driver-memory 170g

Я выполняю операцию map, за которой следует group_by, а затем agg и записываю в файл паркета. И он все еще застрял на  введите описание изображения здесь

Есть ли способ оптимизировать производительность, изменив spark.executor.memory или изменив количество ядер, используемых вместо использования Master [*]? Как определить оптимальную настройку для данной задачи и размера данных? какие значения в файлах --conf мне нужно точно настроить?

Короче, как заставить Spark использовать все доступные ресурсы наилучшим образом?


person Neo    schedule 06.11.2020    source источник
comment
Вы можете проверить использование ЦП и памяти в top или что-то в этом роде. Думаю, Spark по умолчанию использует все доступные ядра. Процесс может быть медленным из-за как медленного ввода-вывода при чтении этого большого блока данных, так и / или медленных вычислений из-за большого объема вычислений.   -  person mck    schedule 07.11.2020


Ответы (1)


Изменение spark.executor.memory не вступит в силу, если вы работаете на одном компьютере. Вам нужен настоящий кластер. Вы можете добавить больше узлов в кластер, чтобы уменьшить количество разделов и ускорить обработку.

person Buggy    schedule 07.11.2020
comment
У меня только один узел / машина - person Neo; 07.11.2020