В чем разница между --master local [n] и --total-executor-core = n (Spark Standalone)? - PullRequest
0 голосов
/ 21 октября 2019

У меня есть кластер Spark Standalone с 4 узлами, каждый из которых имеет 56 ядер

, когда я запускаю одно и то же задание с --master local[56] и master --spark://... --executor-cores 56 --total-executor-cores 56 (которые, я думаю, одинаковы)

Я считаю, что их выступления разные, в то время как более поздние - лучше. В чем разница между этими двумя видами spark-submit?

1 Ответ

1 голос
/ 22 октября 2019

В чем разница между этими двумя типами spark-submit?

--master local[56] использует одну JVM с 56 потоками для исполнителей.

--master spark://...использует автономный кластер Spark, который может работать или не работать на той же машине, где вы выполняете spark-submit. Этот кластер может иметь или не иметь несколько распределенных узлов, каждый из которых имеет один или несколько процессоров.

--total-executor-cores NUM - это общее количество ядер для всех исполнителей. Здесь не указано, сколько исполнителей (узлов) вы получаете за одно приложение Spark. Это может быть один, но также может быть десятки или более (каждый с неизвестным количеством процессоров). Что вы знаете, это общее количество ядер ЦП для этого приложения Spark.

--executor-cores NUM - для количества ядер на исполнителя. (по умолчанию: все доступные ядра на рабочем в автономном режиме).

Последний вариант требует объяснения различий между исполнителями и работниками.

Исполнителями являются процессы JVM, размещенные работниками. Исполнители несут ответственность за выполнение задач, которые представляют ваше приложение Spark. Рабочие являются частью кластера Spark Standalone.

У вас может быть 10 исполнителей и 1 работник или 1 исполнитель и 10 работников. Также возможно иметь 10 ядер ЦП для приложения Spark из 20 ядер ЦП, доступных во всем кластере Spark Standalone. Это сделано для того, чтобы другие приложения Spark могли spark-submit отправляться в кластер для распределения рабочей нагрузки.


Можно было бы спросить:

Так что в этом случае кажется, что1029 * равно --executor-cores, тогда у нас может быть только 1 исполнитель, поэтому для заданий Spark будет активирован только один узел

--total-executor-cores равен всего количествоКоличество ядер процессора на приложение Spark, в то время как --executor-cores - это количество ядер процессора на одного исполнителя приложения Spark.

Другими словами, --total-executor-cores обычно больше, чем --executor-cores, но оба они также могутбыть одинаковым (например, с одним работником и одним исполнителем).

...