2016-08-17 4 views
3

у меня есть два вопроса вокруг настройки производительности в Spark:Spark - количество исполнителей против числа для ядер

  1. Я понимаю, один из ключевых моментов для управления параллелизмом в искровой работе является количеством разделов которые существуют в обрабатываемом RDD, а затем контролируют исполнители и ядра, обрабатывающие эти разделы. Могу ли я считать, что это так:

    • # исполнителей * # исполнителей cores shoud be < = # разделов. т. е. один раздел всегда обрабатывается в одном ядре одного исполнителя. Там нет смысла иметь больше исполнителей * ядра, чем число разделов
  2. Я понимаю, что наличие большого числа ядер на исполнитель может иметь -ve влияния на таких вещах, как пишет HDFS, но вот мой второй вопрос, чисто с точки зрения обработки данных, какая разница между этими двумя? Напр. если у меня есть 10 узлы кластера, что будет разница между этими двумя работами (при условии, что есть достаточно памяти для каждого узла, чтобы обработать все):

    1. 5 исполнителей * 2 исполнителя сердечники

    2. 2 исполнителей * 5 исполнителя стержни

    Предполагая, что существует бесконечная память и процессор, с точки зрения производительности мы должны ожидать, что предыдущие два будут выполнять то же самое?

ответ

0

По моему опыту, если бы у меня был кластер с 10 узлами, я бы пошел на 20 искровых исполнителей. Детали задания важны, поэтому некоторое тестирование поможет определить дополнительную конфигурацию.

+0

Это хорошая идея иметь больше исполнителей, чем количество узлов? Не было бы лучше иметь больше ядер для каждого исполнителя, если каждый исполнитель не будет использовать достаточное количество CPU/памяти на узле? – Shay