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

Что такое режим пряжи-клиент в Spark?

Apache Spark недавно обновил версию до 0.8.1, в которой доступен режим yarn-client. Мой вопрос: что означает режим пряжи-клиента? В документации говорится:

With yarn-client mode, the application will be launched locally. Just like running  
application or spark-shell on Local / Mesos / Standalone mode. The launch method is also 
the similar with them, just make sure that when you need to specify a master url, use   
"yarn-client" instead

Что значит "запускать локально"? Локально где? На кластере искры?
Какова конкретная разница от автономного режима пряжи?

4b9b3361

Ответ 1

Приложение Spark состоит из драйвера и одного или нескольких исполнителей. Программа драйвера является основной программой (где вы создаете экземпляр SparkContext), который координирует выполнение исполнителей для запуска приложения Spark. Исполнители выполняют задачи, назначенные драйвером.

Приложение YARN имеет следующие роли: нить-клиент, мастер приложений пряжи и список контейнеров, работающих с менеджерами node.

Когда приложение Spark запускается на YARN, у него есть собственная реализация клиента пряжи и мастера применения пряжи.

С этим фоном основное различие заключается в том, где выполняется программа драйвера.

  • Прямой автономный режим: ваша программа драйверов работает как поток мастера приложения пряжи, который сам работает с одним из менеджеров node в кластере. Клиент "Пряжа" просто извлекает статус из мастера приложения. Этот режим аналогичен заданию mapreduce, где мастер приложения MR координирует контейнеры для запуска задач по карте/сокращению.
  • Режим клиента пряжи: ваша программа драйверов работает на клиенте пряжи, где вы вводите команду для подачи искрового приложения (возможно, это не машина в кластере пряжи). В этом режиме, хотя программа-диск работает на клиентской машине, задачи выполняются исполнителями в менеджерах node кластера YARN.

Ссылка: http://spark.incubator.apache.org/docs/latest/cluster-overview.html

Ответ 2

Итак, в искру у вас есть два разных компонента. Есть водитель и рабочие. В режиме нитевого кластера драйвер работает удаленно с данными node, а рабочие работают на отдельных узлах данных. В режиме "пряжа-клиент" драйвер находится на машине, которая начала работу, а рабочие находятся на узлах данных. В локальном режиме водитель и работники находятся на машине, которая начала работу.

При запуске .collect() данные из рабочих узлов втягиваются в драйвер. Это в основном, где происходит финальный бит обработки.

Для себя я обнаружил, что режим пряжи-кластера лучше, когда я нахожусь дома на vpn, но режим пряжи-клиента лучше, когда я запускаю код из центра обработки данных.

Режим "пряжа-клиент" также означает, что вы привязываете одного менее рабочего node к драйверу.

Ответ 3

Приложение Spark, работающее в

режим пряжи-клиента:

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

  • Распределение ресурсов выполняется менеджером ресурсов YARN на основе локализации данных на узлах данных, а программа драйвера с локальной машины будет управлять исполнителями на искровом кластере (Node).

Подробнее см. эту статью статью.

Разница между автономным режимом и режимом развертывания пряжи,

  • Оптимизация ресурсов не будет эффективной в автономном режиме.
  • В автономном режиме программа-драйвер запускает исполнитель в каждом node кластера, независимо от локальности данных.
  • standalone хорош для использования, когда выполняется только ваше искровое приложение, и кластеру не нужно выделять ресурсы для других заданий эффективным образом.

введите описание изображения здесь

Ответ 4

С режимом "пряжа-клиент" ваше искровое приложение запускается на вашем локальном компьютере. При использовании автономного режима с пряжей ваше искровое приложение будет отправлено YARN ResourceManager в виде нити ApplicationMaster, а ваше приложение будет работать в пряже node, где работает ApplicationMaster. В обоих случаях пряжа служит диспетчером искрового кластера. Ваше приложение (SparkContext) отправляет задачи на пряжу.

Ответ 5

Оба искры и пряжа являются распределенной структурой, но их роли различны:

Пряжа - это структура управления ресурсами, для каждого приложения она имеет следующие роли:

ApplicationMaster: управление ресурсами одного приложения, в том числе запрашивать/освобождать ресурс от пряжи для приложения и монитора.

Попытка: попытка - это обычный процесс, который выполняет часть всей работы приложения. Например, задание mapreduce, состоящее из нескольких картографов и редукторов, каждый обработчик и редуктор является попыткой.

Общий процесс сложения приложения к нити:

  • Клиент отправляет заявку на пряжу. в запрос, Пряжа должна знать класс ApplicationMaster; Для SparkApplication, это org.apache.spark.deploy.yarn.ApplicationMaster, для задания MapReduce, это org.apache.hadoop.mapreduce.v2.app.MRAppMaster.

  • Пряжа выделяет некоторый ресурс для процесса ApplicationMaster и   запустите процесс ApplicationMaster в одном из узлов кластера,

  • После запуска ApplicationMaster ApplicationMaster запросит ресурс от пряжи для этого приложения и запускающего рабочего;

Для Spark, распределенной вычислительной структуры, вычислительная работа делится на множество небольших задач, и каждый Исполнитель будет отвечать за каждую задачу, Драйвер будет собирать результат всех задач Executor и получать глобальный результат. У искрового приложения есть только один драйвер с несколькими исполнителями.

Итак, проблема возникает, когда Spark использует Yarn в качестве инструмента управления ресурсами в кластере:

  • В режиме кластеров пряжи клиент Spark отправит искровое приложение в пряжа, как Spark Driver, так и Spark Executor находятся под наблюдением пряжи. В перспективе пряжи, Spark Driver и Spark Executor имеют никакой разницы, но нормальные процессы Java, а именно приложение рабочий процесс. Таким образом, когда процесс клиента ушел, например, клиент процесс прекращается или уничтожается, приложение искры на пряжу все еще работает.

  • В режиме клиента пряжи, только Исполнитель искры находится под надзор за пряжей. Инструмент подачи нити попросит ресурс для просто искра. Программа-драйвер запускается в клиенте процесс, который не имеет ничего общего с пряжей, просто процесс подачи приложение к пряже. Таким образом, когда клиент уходит, например. клиент
    выходы процесса, драйвер выключен и компьютер завершен.