2014-09-28 3 views
1

Я запускаю Spark на локальной машине с 8 ядрами, и я понимаю, что могу использовать «local [num_threads]» в качестве мастера и использовать «num_threads» в скобке, чтобы указать количество потоков, используемых Spark.Как контролировать количество используемых нитей/ядер?

Однако кажется, что Spark часто использует больше потоков, чем я требовал. Например, если я укажу только 1 поток для Spark, используя верхнюю команду в Linux, я все же могу заметить, что использование процессора часто превышает 100% и даже 200%, подразумевая, что более 1 потока фактически используются Spark ,

Возможно, это проблема, если мне нужно запустить несколько программ одновременно. Как я могу контролировать количество потоков/ядер, используемых строго Spark?

+2

Это не количество потоков. Это число одновременных задач, которые Spark будет выполнять (задача является частью действия на RDD). Spark использует несколько других потоков для разных вещей, таких как обработка связи и обслуживание пользовательского интерфейса драйвера. – vanza

+0

Спасибо за ваш ответ! Тогда есть ли способ контролировать количество ядер/процессоров, используемых Spark? – SciPioneer

+0

Не так, как вы хотите. Вы можете контролировать количество одновременных задач, но это все. Если вы хотите больше, вам нужно будет использовать некоторый контроль уровня ОС, например, группы Linux. – vanza

ответ

0

Spark использует один поток для своего планировщика, который объясняет шаблон использования, который вы видите. Если вы запускаете n потоков параллельно, вы получите n+1 используемых сердечников.

Подробнее см. В scheduling doc.