Файл Python + PySpark, локально подключающийся к удаленному кластеру HDFS/Spark/Yarn

Я играл с HDFS и Spark. Я настроил кластер из пяти узлов в своей сети, работающий с HDFS, Spark и управляемый Yarn. Воркеры работают в клиентском режиме. С главного узла я могу нормально запустить оболочку PySpark. При запуске примеров jar задание распределяется по рабочим узлам и выполняется хорошо.

У меня есть несколько вопросов о том, как запускать файлы python/Pyspark в этом кластере.

  1. Если у меня есть файл python с вызовами PySpark в другом месте, например, на моем локальном ноутбуке разработчика или где-то в контейнере докеров, есть ли способ запустить или отправить этот файл локально и выполнить его на удаленном кластере Spark? Методы, которые мне интересны, включают запуск spark-submit в локальной среде/среде докеров, но файл имеет SparkSession.builder.master(), настроенный для удаленного кластера.

  2. Связано это с тем, что я вижу конфигурацию для --master в spark-submit, но единственный вариант пряжи - передать «пряжу», которая, кажется, ставится в очередь только локально? Есть ли способ указать удаленную пряжу?

  3. Если я могу настроить и запустить файл удаленно, как мне настроить SparkSession.builder.master()? Является ли URL-адрес только URL-адресом hdfs:// для порта 9000, или я должен отправить его на один из портов Yarn?

ТИА!

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
222
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

способ запустить или отправить этот файл локально и выполнить его на удаленном кластере Spark

Да, ну "YARN", а не "удаленный кластер Spark". Вы устанавливаете --master=yarn при работе с spark-submit, и это будет работать с настроенным yarn-site.xmlв переменной среды HADOOP_CONF_DIR. Вы можете определить это на уровне ОС или в spark-env.sh.

Вы также можете использовать SparkSession.builder.master('yarn') в коде. Если указаны оба параметра, один из них будет переопределен.

Для полноценной работы «в кластере» также установите --deploy-mode=cluster

Есть ли способ указать удаленную пряжу?

Как уже упоминалось, это настроено из yarn-site.xml для предоставления местоположения менеджера ресурсов.

как настроить SparkSession.builder.master()? Это URL-адрес только для hdfs:// URL-адрес порта 9000

Нет. Менеджер ресурсов YARN имеет собственный протокол RPC, а не hdfs:// ... Однако вы можете использовать spark.read("hdfs://namenode:port/path") для чтения файлов HDFS. Как уже упоминалось, .master('yarn') или --master yarn — это единственные нужные вам конфигурации, специфичные для Spark.


Если вы хотите использовать контейнеры Docker, YARN поддерживает это, но мастер Spark Kubernetes будет проще настроить, и вы можете использовать Hadoop Ozone или MinIO, а не HDFS в Kubernetes.

Все это имеет смысл, спасибо! Я пытался быть очень умным и отправить искру из док-контейнера, созданного из официального образа искры apache. Однако на этом изображении нет пряжи и, следовательно, нет пряжи-site.xml. Получив это и настроив HADOOP_CONF_DIR в контейнере, я смог запустить свой файл в кластере.

Snap E Tom 12.10.2022 01:44

Чтобы уточнить, вам не нужен YARN, чтобы иметь файл XML. Вы можете просто скопировать файл в контейнер и установить CONF env-var

OneCricketeer 12.10.2022 02:36

Да, это именно то, что я сделал. Я только что создал файл и запустил контейнер с указанием на него HADOOP_CONF_DIR. Мне также пришлось изменить права доступа к каталогу /opt/spark, так как разрешение по умолчанию — root, а при запуске — не root, но в остальном теперь он взаимодействует с кластером. Спасибо!

Snap E Tom 12.10.2022 03:08

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

OneCricketeer 12.10.2022 03:48

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