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

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

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

  • Имеет ли рабочий экземпляр один рабочий node с двумя рабочими процессами?
  • У каждого рабочего экземпляра есть исполнитель для конкретного приложения (который управляет хранилищем, задачей) или один рабочий node содержит одного исполнителя?
  • Есть ли блок-схема, объясняющая, как искробезопасность, например, подсчет слов?

Ответ 1

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

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

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

Третий вопрос непонятен.

Ответ 2

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

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

Ответ 3

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

Подробнее о о том, как настроить несколько экземпляров сотрудников.

Ответ 4

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

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

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

Spark Standalone mode

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

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

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

1 Node = 1 Worker process

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

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

Проверьте Рабочий node на данном изображении. A Worker node in cluster

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

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

Если вы правильно поняли, правильно ли задаете вопрос, спрашиваете ли вы?

Example word count flow

кредиты изображения

Е.И.В.