Являются ли исполнители ноутбуков Jupyter динамически распределенными в Apache Spark?

У меня возник вопрос, чтобы лучше понять концепцию больших данных в Apache Hadoop Spark. Не уверен, что это вне темы на этом форуме, но дайте мне знать.

Представьте себе кластер Apache Hadoop с 8 серверами, управляемыми менеджером ресурсов Yarn. Я загрузил файл в HDFS (файловая система), который настроен с размером блока размером 64 МБ и числом репликации 3. Этот файл затем разбивается на блоки размером 64 МБ. Теперь давайте представим, что блоки распределены HDFS на узлы 1, 2 и 3.

Но теперь я кодирую код Python с ноутбуком Jupyter. Поэтому ноутбук запускается с помощью этой команды:

PYSPARK_DRIVER_PYTHON = jupyter PYSPARK_DRIVER_PYTHON_OPTS = "notebook" pyspark –master yarn-client –num-исполнители 3 – исполнительные ядра 4 – память-исполнитель 16G

Внутри ноутбука я загружаю файл из HDFS, чтобы сделать некоторые аналитики. Когда я выполнил свой код, я могу видеть в веб-интерфейсе YARN, что у меня есть 3 исполнителя и как задания передаются (распределяются) исполнителям.

Интересная часть состоит в том, что мои исполнители привязаны к определенным вычислительным узлам сразу после команды запуска (см. Выше). Например, узлы 6, 7 и 8.

Мои вопросы:

  1. Является ли мое предположение правильным, что узлы-исполнители привязаны к вычислительным узлам, а блоки HDFS будут переданы исполнителям, когда я получаю (загружая) файл из HDFS?
  2. Или, исполнители динамически назначаются и запускаются в узлах, где находятся данные (узлы 1, 2 и 3). В этом случае мое наблюдение на веб-сайте YARN должно быть неправильным.

Мне действительно интересно понять это лучше.

настройка кластера

One Solution collect form web for “Являются ли исполнители ноутбуков Jupyter динамически распределенными в Apache Spark?”

Являются ли исполнители ноутбуков Jupyter динамически распределены в Apache Spark

Для ясности, давайте различать

  • Ноутбуки Jupyter и связанные с ними ядра – ядро ​​- это процесс Python за пользовательским интерфейсом ноутбука. Ядро выполняет любой код, который вы вводите и отправляете в свой ноутбук. Ядром управляет Юпитер, а не Спарк.

  • Spark executors – это вычислительные ресурсы, выделенные в кластере YARN для выполнения искровых заданий

  • Узлы данных HDFS – это то место, где находятся ваши данные. Узлы данных могут быть или не быть такими же, как узлы-исполнители.

Является ли мое предположение правильным, что узлы-исполнители привязаны к вычислительным узлам, а блоки HDFS будут переданы исполнителям после того, как я получаю (загружая) файл из HDFS

Да и нет – да, Spark учитывает местность данных при расчете заданий. Нет, нет никакой гарантии. Согласно документации Spark :

(…) есть два варианта: a) дождаться, пока занятый ЦП освободится, чтобы запустить задачу на данных на том же сервере, или b) немедленно запустить новую задачу в более удаленном месте, где требуется перемещение данных. То, что Spark обычно делает, это немного подождать в надежде, что занятый процессор освободится. По истечении этого таймаута он начинает перемещать данные издалека в свободный процессор. (…)

Или, исполнители динамически назначаются и запускаются в узлах, где находятся данные (узлы 1, 2 и 3).

Это зависит от конфигурации. В целом исполнители выделяются на искровое приложение (т.е. SparkContext) динамически и освобождаются, когда больше не используются. Тем не менее, исполнители сохраняются в течение некоторого времени в соответствии с документацией планирования заданий :

(…) Приложение Spark удаляет исполнителя, когда он простаивает больше, чем spark.dynamicAllocation.executorIdleTimeout seconds. (…)

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

  • Может ли PySpark работать с массивами numpy?
  • Передача приложения Python с Apache Spark Submit
  • Работает ли искривление предиката с JDBC?
  • Как подключить HBase и Spark с помощью Python?
  • как изменить столбец Dataframe из типа String в Double type в pyspark
  • Паттерн данных Pyspark конвертирует несколько столбцов в float
  • Почему мои `binaryFiles` пусты, когда я их собираю в pyspark?
  • Создание гистограммы с помощью столбца Spark DataFrame
  •  
    Interesting Posts for Van-Lav

    Не удается вернуть результаты хранимой процедуры с помощью курсора Python

    Кто-нибудь знает о структурах / библиотеках рабочего процесса в Python?

    Django: как переопределить сообщение об ошибке unique_together?

    Как передать объекты в ключевые слова в рамках робота?

    экономный парсер – ошибка, пытающаяся разобрать грамматику задания

    В чем смысл одиночного и двойного подчеркивания перед именем объекта?

    Проверка нечеткой / приблизительной подстроки, существующей в более длинной строке, в Python?

    set env var в многопроцессорной обработке Python.Process

    Функция распределения вероятности в Python

    Извлечь первую дату из строки в кадре данных

    Обновление с Python 3.5.1 до 3.6: SyntaxError: «выход» внутри асинхронной функции

    Обработка столбцов идентичности Redshift в SQLAlchemy

    Как количественно оценить доброту пригонки в SciPy?

    Python: определение префикса из набора (похожих) строк

    Python string.strip, зачищающий слишком много символов

    Python - лучший язык программирования в мире.