Не зная ресурсов, выделенных для исполнителя, характера работы, объема обрабатываемых вами данных и т. Д. c., Очень трудно дать правильное предложение. Я думаю, что лучшее, что вы можете сделать сейчас, это также установить ganglia при создании кластера EMR. Веб-интерфейс ganglia доступен через http://master-public-dns-name/ganglia/
Для начала посмотрите на использование процессора и памяти. Это даст вам достаточно хорошее представление, если вы оптимально распределяете ресурсы для своей работы с искрой, а затем соответственно настраиваете ресурсы для каждого исполнителя.
Количество исполнителей, память исполнителя и ядра могут быть установлены в вашей свече. Отправьте команду, используя следующий способ (это примеры значений):
--num-executors 10
--executor-cores 1
--executor-memory 5g
Изучив диаграммы ганглиев, вы поймете, какой ресурс используется в недостаточной степени. Измените их соответствующим образом.
Если вы не хотите поиграться с этими числами, и пусть spark определит, какая комбинация является наилучшей, возможно, стоит установить динамическое c распределение ресурсов в значение true, используя следующие строки:
--conf spark.shuffle.service.enabled=true
--conf spark.dynamicAllocation.enabled=true
Следует отметить, что пряжа будет получать 75% всей памяти, выделенной для узлов ядра + задачи. Кроме того, с драйвером и каждым исполнителем связаны накладные расходы памяти. Посмотрите искры документации для этого. Помните об этом при ручном выделении ресурсов для драйвера и исполнителя.