Каковы взаимоотношения между работниками, работниками и исполнителями?

В автономном режиме Spark есть главный и рабочий узлы.

Вот несколько вопросов:

  1. Означает ли 2 рабочих экземпляра один рабочий узел с 2 рабочими процессами?
  2. Каждый рабочий экземпляр содержит исполнителя для определенного приложения (которое управляет хранением, задачей) или один рабочий узел содержит одного исполнителя?
  3. Есть ли блок-схема, объясняющая, как работает искра, например, подсчет слов?

4 ответа

Решение

Я предлагаю сначала прочитать документы по кластеру Spark, но тем более это сообщение в блоге Cloudera, объясняющее эти режимы.

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

Рабочие держат много исполнителей, для многих приложений. Одно приложение имеет исполнителей на многих работников.

Ваш третий вопрос не ясен.

Переходя к другим замечательным ответам, я хотел бы описать их несколькими изображениями.

В автономном режиме Spark есть главный узел и рабочие узлы.

Если мы представляем как мастера, так и рабочих в одном месте для автономного режима.

Искровой автономный режим

Если вам интересно, как Spark работает с YARN? проверить этот пост Spark на YARN

1. Имеет ли значение 2 рабочих экземпляра один рабочий узел с 2 рабочими процессами?

В общем случае мы называем рабочий экземпляр как подчиненный, поскольку это процесс для выполнения заданий / заданий с искрой. Рекомендуемое сопоставление для узла (физической или виртуальной машины) и работника:

1 Node = 1 Worker process

2. Каждый рабочий экземпляр содержит исполнителя для конкретного приложения (которое управляет хранением, задачей) или один рабочий узел содержит одного исполнителя?

Да, рабочий узел может содержать несколько исполнителей (процессов), если у него достаточно ЦП, памяти и хранилища.

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

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

3. Есть ли блок-схема, объясняющая, как работает искра?

Если мы посмотрим на исполнение от Spark над любым менеджером ресурсов для программы, которая join два rddи сделать некоторые reduce операция тогда filter

Spark Runtime для примера кода

Е.И.В.

Я знаю, что это старый вопрос, и ответ Шона был превосходным. Моя статья о SPARK_WORKER_INSTANCES в комментарии MrQuestion. Если вы используете Mesos или YARN в качестве менеджера кластера, вы сможете запускать несколько исполнителей на одном компьютере с одним рабочим, поэтому на самом деле нет необходимости запускать несколько рабочих на одном компьютере. Однако, если вы используете автономный менеджер кластера, в настоящее время он по-прежнему допускает только одного исполнителя на каждый рабочий процесс на каждом физическом компьютере. Таким образом, если у вас очень большой компьютер и вы хотите запустить на нем несколько пользователей, вам нужно запустить более одного рабочего процесса. Это то, для чего предназначен SPARK_WORKER_INSTANCES в spark-env.sh. Значение по умолчанию равно 1. Если вы используете этот параметр, убедитесь, что вы установили SPARK_WORKER_CORES явным образом, чтобы ограничить число ядер на одного работника, иначе каждый работник будет пытаться использовать все ядра.

Это автономное ограничение менеджера кластера должно скоро исчезнуть. Согласно этому SPARK-1706, эта проблема будет исправлена ​​и выпущена в Spark 1.4.

Как говорил Лан, использование нескольких рабочих экземпляров актуально только в автономном режиме. Есть две причины, по которым вы хотите иметь несколько экземпляров: (1) сборщик пауз мусора может снизить пропускную способность для больших JVM (2) Размер кучи>32 ГБ не может использовать CompressedOoops

Узнайте больше о том, как настроить несколько рабочих экземпляров.

Другие вопросы по тегам