выполнение задания pyspark в кластере пряжи - PullRequest
1 голос
/ 29 мая 2020

Я пытаюсь понять, как искровые работы работают в кластере пряжи

Я использую следующие команды для отправки работы

  1. spark-submit --master yarn --deploy-mode cluster sparksessionexample.py

После отправки задания консоль показывает ниже журнал консоли

2020-05-29 20:52:48,668 INFO yarn.Client: Uploading resource file:/tmp/spark-bcd415f0-a22e-46b2-951c-5b6e4385a0c6/__spark_libs__2908230569257238890.zip -> hdfs://localhost:9000/user/hadoop/.sparkStaging/application_1590759398715_0003/__spark_libs__2908230569257238890.zip
2020-05-29 20:53:14,164 INFO yarn.Client: Uploading resource file:/home/hadoop/pythonprojects/Python/src/spark_jobs/sparksessionexample.py -> hdfs://localhost:9000/user/hadoop/.sparkStaging/application_1590759398715_0003/sparksessionexample.py
2020-05-29 20:53:14,610 INFO yarn.Client: Uploading resource file:/home/hadoop/clouderaapp/apache-spark/python/lib/pyspark.zip -> hdfs://localhost:9000/user/hadoop/.sparkStaging/application_1590759398715_0003/pyspark.zip
2020-05-29 20:53:15,984 INFO yarn.Client: Uploading resource file:/home/hadoop/clouderaapp/apache-spark/python/lib/py4j-0.10.7-src.zip -> hdfs://localhost:9000/user/hadoop/.sparkStaging/application_1590759398715_0003/py4j-0.10.7-src.zip
2020-05-29 20:53:18,362 INFO yarn.Client: Uploading resource file:/tmp/spark-bcd415f0-a22e-46b2-951c-5b6e4385a0c6/__spark_conf__7123551182035223076.zip -> hdfs://localhost:9000/user/hadoop/.sparkStaging/application_1590759398715_0003/__spark_conf__.zip

Я просто хочу понять, как yarn выполняет файл sparksessionexample.py , я имею в виду, создает ли он python виртуальный env на узле? как указано выше, журнал показывает только загрузку lib, confs, но как насчет клиента python для выполнения sparksessionexample.py ?

Может ли кто-нибудь помочь понять это?

1 Ответ

0 голосов
/ 29 мая 2020

«Клиент Spark» используется для bootstrap выполнения задания Spark.

В вашем случае это only вещь, которая работает на вашем локальном компьютере, потому что вы запросили cluster режим выполнения :

  • «клиент» связывается с диспетчером кластера (здесь YARN Resource Manager, может быть Kubernetes Master и т.д. c.) для запуска драйвера Spark внутри контейнера AppMaster
  • , затем драйвер снова связывается с диспетчером кластера, чтобы запросить некоторые контейнеры для исполнителей
  • , затем драйвер запускает ваш Python код и распределяет работу исполнителям
  • наконец, драйвер освобождает своих исполнителей и себя
  • на этом этапе «клиент» замечает, что задание YARN достигло состояния успеха или сбоя и может завершить работу

Короче говоря, «клиент» никогда не получает никакой полезной информации от драйвера, работающего внутри кластера. Вы должны проверить журналы YARN для контейнера, в котором запущен драйвер (это AppMaster, обычно номер 00001) .


Если вы хотите получить обратную связь от драйвера, затем запустите свое задание в client режиме выполнения - это означает, что драйвер будет работать на той же JVM, что и «клиент», на вашем локальном компьютере, и будет выводить свои журналы в вашу консоль.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...