В чем разница между режимом клиента и режимом кластера в Spark? - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть сомнения, чтобы понять, что такое режим клиента и режим кластера.Давайте рассмотрим пример:

У меня есть test.py со следующим:

if __name__ == "__main__":

conf = (SparkConf()
     .setAppName(appName)
     .set("spark.executor.memory", ?)
     .set('spark.driver.memory', ?)
     .set('spark.executor.memoryOverhead',?)
     .set("spark.network.timeout", ?)
     .set("spark.files.overwrite", ?)
     .set("spark.executor.heartbeatInterval", ?)
     .set("spark.driver.maxResultSize", ?)
     .set("spark.executor.instances", ?)
     .set("spark.executor.cores", ?)
     .set("spark.driver.cores", ?)
     .set("spark.sql.shuffle.partitions", ?)
     )
spark = SparkSession.builder.config(conf=conf).getOrCreate()

start_time = time.time()
sc = spark.sparkContext
sqlContext = SQLContext(sparkContext = sc)

Я работаю на Linux-сервере SSH.Чтобы запустить test.py, я могу сделать две опции:

1- Зарезервировать узел, используя следующую команду:

salloc --time=03:00:00 --cpus-per-task=32 --mem=0 --account=def-myName

Эта команда позволяет мне зарезервировать узел на трич.Этот узел имеет следующую спецификацию:

Cores: 32
Available memory:   125 gb
CPU type:   2 x Intel E5-2683 v4 "Broadwell" @ 2.1Ghz                         
Storage: 2 x 480GB SSD

теперь для запуска test.py, я просто набираю spark-submit test.py.Этот способ называется режимом клиента или режимом кластера?Если это клиентский режим, как я могу установить:

Master Memory:
Master Cores:
Number of Worker Nodes:
Memory per worker node (gb):
Cores per worker node:

2 - я могу запустить job.sh, где это определяется следующим образом:

    #SBATCH --nodes=1
    #SBATCH --time=
    #SBATCH --mem=128000M
    #SBATCH --cpus-per-task=
    #SBATCH --ntasks-per-node=
    #SBATCH --output=sparkjob-%j.out
    #SBATCH --mail-type=ALL
    #SBATCH --error=
    ## send mail to this address
    #SBATCH --mail-user=

    spark-submit --total-executor-cores xxx --driver-memory xxxx test.py
....

Затем я выполняю код с помощьюsbatch job.sh.Этот путь называется кластерным способом?

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Некоторая дополнительная информация о том, когда использовать ту или иную опцию.

Как уже упоминалось, когда вы запускаете spark-submit в режиме клиента , драйвер будет работать на машине, на которой вы выполнили команду spark-submit. Это также означает, что вы сможете контролировать выполнение вашей работы с того же компьютера через командную строку. И, следовательно, если вы прервете свою командную строку, вы прекратите работу драйвера и, в конце концов, задания Spark. Поэтому вы должны не использовать клиентский режим на производстве.

В случае кластерного режима 1014 * драйвер будет работать где-то в произвольном узле кластера. Это подразумевает, что вам необходим другой способ контроля за работой Spark, т. Е. Пользовательский интерфейс Spark.

Как вы уже могли догадаться, клиентский режим полезен для тестирования ваших работ на локальном компьютере, когда кластерный режим используется в производственных и / или тестовых средах.

И ответить на ваш вопрос:

1) Режимом по умолчанию является режим клиента, поэтому при вводе:

spark-submit --total-executor-cores xxx --driver-memory xxxx test.py

Это будет выполнено в режиме клиента.

2) Если вы хотите выполнить свою работу в кластерном режиме, вы должны набрать:

spark-submit --total-executor-cores xxx --driver-memory xxxx --deploy-mode cluster test.py
1 голос
/ 25 апреля 2019

В режиме клиента драйвер (выполнение ваших локальных задач) устанавливается на сервере, с которого вы запустили spark-submit. исполнители динамически распределяются вашим менеджером ресурсов (пряжа или мезо) на любых узлах, у которых есть запрошенные вами ресурсы.

В режиме кластера Драйвер также распределяется динамически вашим менеджером ресурсов и поэтому может находиться на любом узле вашего кластера.

Подробнее вы можете прочитать здесь https://stackoverflow.com/a/41142747/8467558.

Встроенная команда spark-submit дляРежим развертывания: --deploy-mode

Usage: spark-submit [options] <app jar | python file | R file> [app arguments]
Usage: spark-submit --kill [submission ID] --master [spark://...]
Usage: spark-submit --status [submission ID] --master [spark://...]
Usage: spark-submit run-example [options] example-class [example args]

Options:
  --master MASTER_URL         spark://host:port, mesos://host:port, yarn,
                              k8s://https://host:port, or local (Default: local[*]).
  --deploy-mode DEPLOY_MODE   Whether to launch the driver program locally ("client") or
                              on one of the worker machines inside the cluster ("cluster")
                              (Default: client).

Если он не установлен, по умолчанию будет использоваться spark-defaults.conf значение конфигурации spark.submit.deployMode.Если нет конфигурации по умолчанию или если это значение не установлено, оно будет client.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...