[Перевод] Настройка мультинодового кластера Airflow с HDP Ambari и Celery для конвейеров данных

Airflow — идеальный выбор для конвейеров данных, то есть для оркестрации и планирования ETL. Он широко применяется и популярен для создания конвейеров передачи данных будущего. Он обеспечивает обратное заполнение, управление версиями и происхождение с помощью функциональной абстракции.

Функциональное программирование — это будущее.

Оператор определяет единицу в рабочем процессе, DAG — это набор Задач. Операторы обычно работают независимо, на самом деле они могут работать на совершенно двух разных машинах. Если вы инженер данных и работали с Apache Spark или Apache Drill, вы, вероятно, знаете, что такое DAG! Такая же концепция и у Airflow.

Создавайте конвейеры данных, которые:

  1. Идемпотентны.

  2. Детерминированы.

  3. Не имеют побочных эффектов.

  4. Используют неизменные источники и направления.

  5. Не обновляются, не добавляются.

Модульность и масштабируемость — основная цель функциональных конвейеров данных.

Если вы работали с функциональным программированием с помощью Haskell, Scala, Erlang или Kotlin, вы удивитесь, что это то, что мы делаем в функциональном программировании, и вышеперечисленные пункты относятся к функциональному программированию, да! Вы правы. Функциональное программирование — это мощный инструмент будущего.

Если у вас есть ETL / Data Lake / Streaming Infrastructure как часть платформы разработки данных, у вас должен быть кластер Hadoop / Spark с некоторым дистрибутивом, таким как Hortonworks, MapR, Cloudera и т. д. Поэтому я собираюсь рассказать о том, как вы можете использовать ту же инфраструктуру, где у вас есть Apache Hadoop / Apache Spark Cluster, и вы используете его для создания Airflow Cluster и его масштабирования.

Если у вас много заданий ETL и вы хотите организовать и составить расписание с помощью некоторых инструментов планирования, у вас есть несколько вариантов, например Oozie, Luigi и Airflow. Oozie основан на XML, и мы взяли его 2019 году! :), Luigi чуть не выбросили после того, как Airflow родился на Airbnb.

Почему не используем Luigi с Airflow?

  1. У Airflow есть собственный планировщик, в котором Luigi требует синхронизировать задачи в задании cron.

  2. С Luigi навигация по пользовательскому интерфейсу становится сложной задачей.

  3. В Luigi сложно создавать задачи.

  4. Luigi не масштабируется из-за тесной связи с заданиями Cron.

  5. Повторный запуск процесса в Luigi невозможен.

  6. Luigi не поддерживает распределенное выполнение, так как оно плохо масштабируется.

До появления Airflow я использовал Luigi для поддержки рабочего процесса моделей машинного обучения с помощью Scikit-learn, Numpy, Pandas, Theano и т. д.

В последнем сообщении блога мы обсудили, как настроить мультинодовый кластер Airflow с Celery и RabbitMQ без использования Ambari.

Ага, переходим к главному.

Как настроить мультинодовый кластер Airflow в Hadoop Spark Cluster, чтобы Airflow мог запускать задания Spark/Hive/Hadoop Map Reduce, а также выполнять координацию и планирование.

Давайте сделаем это!

Вы должны использовать airflow-ambari-mpack (пакет управления Apache Airflow для Apache Ambari), я использовал реализацию с открытым исходным кодом от FOSS Contributor https://github.com/miho120/ambari-airflow-mpack, Спасибо за ваш вклад.

Следующие шаги:

Из предыдущего сообщения в блоге вы должны выполнить шаги с 1 по 4, чтобы установить RabbitMQ и другие пакеты.

Ref. Как настроить мультинодовый кластер Airflow с помощью Celery и RabbitMQ

  1. Устанавливаем Apache MPack для Airflow
a. git clone https://github.com/miho120/ambari-mpack.git
b. stop ambari server
c. install the apache mpack for airflow on ambari server
d. start ambari server

  1. Добавляем Airflow Service в Ambari

После успешного выполнения вышеуказанных шагов вы можете открыть интерфейс Ambari

http://<HOST_NAME>:8080

Откройте пользовательский интерфейс Ambari (Ambari UI), нажмите Действия -> Добавить службу. (Actions -> Add Service)

HDP Ambari Dashboard

Если шаг 1 выполнен успешно, вы сможете увидеть Airflow как часть службы Ambari.

Сервис Airflow в Ambari

Вы должны выбрать, на каком узле вы хотите установить веб-сервер, планировщик и воркер. Я бы порекомендовал установить Airflow на веб-сервер, планировщик на master ноде, то есть на узле имени, и на Install Worker на data-нодах.

Ambari Master нода / Name нода для Airflow

Как вы можете видеть на изображении выше, веб-сервер Airflow и планировщик Airflow установлены на Name ноде кластера Hadoop / Spark.

Как вы можете видеть на скриншоте выше, служба Airflow Worker установлена на Data ноде кластера.

В итоге, у меня есть 3 воркер (worker) ноды на трех data нодах.

Сервис Airflow в Ambari

Ambari UI: 3 воркера в Airflow

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

Конфигурация Airflow в Ambari:

Нажмите на Airflow Service, а затем на Config в пользовательском интерфейсе Ambari.

Конфигурация Airflow в Ambari

  1. Смените Executor
executor = CeleryExecutor

В разделе Advanced airflow-core-site укажите Executor как CeleryExecutor.

  1. SQL Alchemy Connection
sql_alchemy_conn = postgresql+psycopg2://airflow:airflow@{HOSTNAME}/airflow

SQL Alchemy Connection

Измените соединение SQL Alchemy на соединение postgresql, пример приведен выше.

  1. URL-адрес брокера
broker_url= pyamqp://guest:guest@{RabbitMQ-HOSTNAME}:5672/
celery_result_backend = db+postgresql://airflow:airflow@{HOSTNAME}/airflow

URL-адрес брокера и Celery result backend для Airflow

  1. Прочие
dags_are_paused_at_creation = True
load_examples = False

Конфигурация Airflow-core-site.

После того, как все эти изменения будут внесены в конфигурацию Ambari Airflow, Ambari попросит вас перезапустить все затронутые службы, перезапустите службы и нажмите Service Actions -> InitDB.

Airflow Initdb из Ambari

А затем запустите службу airflow. Теперь у вас должен получиться мультинодовый кластер Airflow.

Кое-что из Чек-листа для проверки служб для мультинодового кластера Airflow:

  1. Очереди RabbitMQ должны быть запущены:

  1. Подключения RabbitMQ должны быть активными:

  1. Каналы RabbitMQ должны быть запущены:

  1. Отображение Celery Flower

Celery Flower — это веб-инструмент для мониторинга и управления кластерами Celery. Номер порта по умолчанию — 5555.

Вы также можете видеть здесь, что 3 рабочих находятся в сети, и вы можете отслеживать одну единицу «задачи» Celery здесь.

Подробнее о Celery Flower: https://flower.readthedocs.io/en/latest/

Обратите внимание, что вы также можете запустить «Celery Flower», веб-интерфейс, созданный поверх Celery, для наблюдения за своими рабочими. Вы можете использовать команду быстрого доступа airflow flower, чтобы запустить веб-сервер Flower.

nohup airflow flower >> /var/local/airflow/logs/flower.logs &

Мы закончили установку и настройку мультинодовый кластер Airflow на Ambari HDP Hadoop / Spark Cluster.

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

Let’s block ads! (Why?)

Read More

Recent Posts

Apple возобновила переговоры с OpenAI и Google для интеграции ИИ в iPhone

Apple возобновила переговоры с OpenAI о возможности внедрения ИИ-технологий в iOS 18, на основе данной операционной системы будут работать новые…

4 дня ago

Российская «дочка» Google подготовила 23 иска к крупнейшим игрокам рекламного рынка

Конкурсный управляющий российской «дочки» Google подготовил 23 иска к участникам рекламного рынка. Общая сумма исков составляет 16 млрд рублей –…

5 дней ago

Google завершил обновление основного алгоритма March 2024 Core Update

Google завершил обновление основного алгоритма March 2024 Core Update. Раскатка обновлений была завершена 19 апреля, но сообщил об этом поисковик…

5 дней ago

Нейросети будут писать тексты объявления за продавцов на Авито

У частных продавцов на Авито появилась возможность составлять текст объявлений с помощью нейросети. Новый функционал доступен в категории «Обувь, одежда,…

5 дней ago

Объявлены победители международной премии Workspace Digital Awards-2024

24 апреля 2024 года в Москве состоялась церемония вручения наград международного конкурса Workspace Digital Awards. В этом году участниками стали…

5 дней ago

Яндекс проведет гик-фестиваль Young Con

27 июня Яндекс проведет гик-фестиваль Young Con для студентов и молодых специалистов, которые интересуются технологиями и хотят работать в IT.…

6 дней ago