Подтвердить что ты не робот

Искры водителя в искры Apache

У меня уже есть кластер из 3 машин (ubuntu1, ubuntu2, ubuntu3 виртуальным сервером VM), на котором запущен Hadoop 1.0.0. Я установил искру на каждой из этих машин. ub1 - мой мастер node, а другие узлы работают как подчиненные. Мой вопрос в том, что такое искровой драйвер? и должен ли мы установить IP-адрес и порт для запуска драйвера на spark.driver.host и где он будет выполнен и расположен? (ведущий или ведомый)

4b9b3361

Ответ 1

Драйвер искры - это программа, которая декларирует преобразования и действия на RDD данных и отправляет такие запросы хозяину.

В практическом плане драйвер - это программа, которая создает SparkContext, подключающуюся к данному Spark Master. В случае локального кластера, как и в вашем случае, master_url=spark://<host>:<port>

Его местоположение не зависит от ведущего/ведомого. Вы можете совместно с мастером или запустить его из другого node. Единственное требование состоит в том, что оно должно быть в сети, адресуемой от Рабочих Искры.

Вот как выглядит конфигурация вашего драйвера:

val conf = new SparkConf()
      .setMaster("master_url") // this is where the master is specified
      .setAppName("SparkExamplesMinimal")
      .set("spark.local.ip","xx.xx.xx.xx") // helps when multiple network interfaces are present. The driver must be in the same network as the master and slaves
      .set("spark.driver.host","xx.xx.xx.xx") // same as above. This duality might disappear in a future version

val sc = new spark.SparkContext(conf)
    // etc...

Чтобы немного объяснить разные роли:

  • Драйвер подготавливает контекст и объявляет операции с данными с помощью преобразований и действий RDD.
  • Драйвер представляет сериализованный график RDD ведущему устройству. Мастер создает задания из него и передает их работникам на исполнение. Он координирует различные этапы работы.
  • Рабочие - это то место, где выполняются задачи. Они должны иметь ресурсы и сетевое подключение, необходимые для выполнения операций, запрошенных на RDD.

Ответ 2

Ваш вопрос связан со спарк-развертыванием на пряже, см. 1: http://spark.apache.org/docs/latest/running-on-yarn.html "Запуск Spark на YARN"

Предположим, что вы начинаете с spark-submit --master yarn cmd:

  1. Cmd запросит диспетчер ресурсов пряжи (RM) для запуска процесса ApplicationMaster (AM) на одном из ваших кластерных компьютеров (на них установлен менеджер узла пряжи).
  2. После запуска AM он вызовет основной метод вашей программы драйвера. Таким образом, драйвер - это то, где вы определяете свой искровой контекст, свой rdd и свою работу. Драйвер содержит метод main входа, который запускает вычисление искры.
  3. Контекст spark подготовит оконечную точку RPC к исполнителю для обратной связи и ко многим другим вещам (хранилище памяти, диспетчер дисковых блоков, сервер Jetty...)
  4. AM будет запрашивать у RM контейнеры для запуска ваших искровых исполнителей с URL-адресом RPC драйвера (что-то вроде spark://CoarseGrainedScheduler @ip: 37444), указанным в cmd запуска исполнителя.

Желтое поле "Spark context" - это Драйвер. Yarn cluster mode

Ответ 3

Драйвер Spark - это процесс, который создает и владеет экземпляром SparkContext. Это твое Приложение Spark, которое запускает основной метод, в котором экземпляр SparkContext создано. Это кокпит выполнения заданий и задач (с использованием DAGScheduler и Task Планировщик). Он размещает веб-интерфейс для среды

Он разбивает приложение Spark на задачи и планирует их запускать на исполнителей. Драйвер - это место, где планировщик задач живет и порождает задачи между рабочими. Водитель координирует работу и общее выполнение задач.

Ответ 4

Проще говоря, Spark driver - это программа, которая содержит основной метод (основной метод является отправной точкой вашей программы). Таким образом, в Java драйвером будет класс, который будет содержать public static void main (String args []).

В кластере вы можете запустить эту программу одним из следующих способов: 1) на любом удаленном хост-компьютере. Здесь вам нужно будет предоставить информацию о удаленных хостах при отправке программы драйвера на удаленный хост. Драйвер работает в JVM-процессе, созданном на удаленном компьютере, и возвращается только с окончательным результатом.

2) Локально от вашего клиентского компьютера (ваш ноутбук). Здесь программа драйвера запускается в процессе JVM, созданного на вашем компьютере локально. Отсюда он отправляет задачу удаленным хостам и ждет результата от каждой задачи.

Ответ 5

Если вы установите конфигурацию "spark.deploy.mode = cluster", ваш драйвер будет запущен на ваших рабочих узлах (ubuntu2 или ubuntu3).
Если spark.deploy.mode = драйвер, который является значением по умолчанию, тогда драйвер будет запускаться на компьютере, чтобы отправить заявку.
И, наконец, вы можете увидеть свое приложение в веб-интерфейсе: http://driverhost:driver_ui_port, где driver_ui_port по умолчанию 4040, и вы можете изменить порт на set config "spark.ui.port"

Ответ 6

Spark драйвер - это узел, который позволяет приложению создавать SparkContext, а sparkcontext - это соединение с вычислительным ресурсом. Теперь драйвер может запускать поле, в котором он представлен, или запускаться на одном из узлов кластера при использовании какого-либо менеджера ресурсов, такого как YARN.

Оба варианта клиента/кластера имеют некоторый компромисс как

  1. Доступ к ЦП/памяти одного узла кластера, иногда это хорошо, потому что узел кластера будет иметь большой объем памяти.
  2. Журналы драйверов находятся на узле кластера по сравнению с локальным блоком, из которого было отправлено задание.
  3. У вас должен быть сервер истории для кластерного режима, другие мудрые журналы на стороне водителя будут потеряны.
  4. Некоторое время сложно установить исполнителя зависимостей (т.е. некоторую нативную зависимость), и запуск приложения spark в режиме клиента приходит на помощь.

Если вы хотите узнать больше об анатомии Spark Job, тогда пост может быть полезен http://ashkrit.blogspot.com/2018/09/anatomy-of-apache-spark-job.html.

Ответ 7

Задание Spark-Submit можно запустить в "deploy-mode" как кластер:

Отредактируйте файл конф мастера master

SPARK_HOME/conf/spark-env.sh

Установите SPARK_MASTER_HOST = masteripaddr

Шаг 1: Запустите главный узел

/opt/spark/spark-2.4.0-bin-hadoop2.7/sbin/start-master.sh

Шаг 2: Запустите узел кластера на подчиненном компьютере

/opt/spark/spark-2.4.0-bin-hadoop2.7/sbin/start-slave.sh spark://masteripaddr:7077

Шаг 3: Запустите задание spark-submit

/opt/spark/spark-2.4.0-bin-hadoop2.7/bin/spark-submit --master spark://localhost:7077 --deploy-mode cluster --class classname Application.jar