Что такое AirFlow?

Планируем рабочие процессы вместе с Apache Airflow

Почему Apache Airflow?

Большинство процессов обработки данных строятся на определении набора «задач» для извлечения, анализа, преобразования, загрузки и хранения данных. Например, последовательность обработки данных может состоять из таких задач, как чтение логов из S3, создание задания Spark для извлечения соответствующих объектов, индексирование объектов с помощью Solr и обновление существующего индекса для расширения поиска. Чтобы автоматизировать процесс и запускать его еженедельно, вы можете использовать планировщик времени, например Cron, определяя рабочие процессы в Crontab. Это действительно отлично подходит для простых рабочих процессов, но все становится хуже, когда вы начинаете поддерживать рабочий процесс в крупных проектах, где между элементами существуют зависимости. Еще это усложняется, если вы ждете каких-то входных данных от сторонних разработчиков, или другие команды не могут начать свою работу, пока не завершатся ваши задачи.

Apache Airflow — это планировщик рабочего процесса, который помогает планировать сложные рабочие процессы и обеспечивает простой способ их поддержания.

 

курсы по технологиям больших данных

Вот несколько причин использовать Apache Airflow:

  1. Открытый исходный код: после запуска в качестве внутреннего проекта Airbnb, Airflow естественным образом нуждался в сообществе. Это было основной причиной, почему он в конечном итоге стал проектом с открытым исходным кодом. В настоящее время поддерживается и управляется как инкубаторный проект на в Apache.
  2. Веб-интерфейс: Airflow ставится с Flaskapp, который отслеживает все рабочие процессы и позволяет вам легко изменять, запускать или останавливать их. Вы также можете работать с командной строкой, но веб-интерфейс более интуитивно понятен.

  3. На основе Python: каждая часть конфигурации написана на языке Python, включая настройку расписаний и скриптов для их запуска. Это устраняет необходимость использовать JSON или XML конфигурационные файлы.

Давайте рассмотрим основные сущности, которые вам понадобятся, чтобы написать первый рабочий процесс в Apache Airflow.

Направленные ациклические графы DAG (Directed Acyclic Graphs)

В Apache Airflow для создания рабочих потоков используются направленные ациклические графы (DAG). DAG — это набор из задач, которые выстроены в определенную последовательность, и выполняющиеся по расписанию.

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

Apache AirFlow планировщик потоков данных ETL/ELT

Определение DAG позволяет планировщику понять, какие задачи могут быть запущены немедленно, а какие должны ждать завершения других задач. Задание Spark должно дождаться трех задач «чтения» и заполнить данные в S3 и HDFS.

Планировщик (Scheduler)

Планировщик — это мозг настройки рабочих процессов в Airflow. Для пользователя взаимодействие с планировщиком ограничивается предоставлением ему информации о различных задачах и когда они должны запускаться.

Операторы (Operators)

Операторы — это «рабочие», которые выполняют наши задачи. Рабочие процессы определяются путем создания группы DAG операторов. Каждый оператор выполняет определенную задачу, написанную в виде функции на Python или через shell-скрипты. Вы можете создавать собственные пользовательские операторы, расширяя класс BaseOperator и реализуя этот execute() метод.

Задачи (Tasks)

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

Важно: не путайте операторы и задачи. Задачи определяют «что запускать?», а операторы — «как запустить?». Например, функция на Python, которая считывает данные из S3 и записывает в базу данных — это задача. Метод, который вызывает эту функцию на Python в Airflow — это оператор. Airflow имеет встроенные операторы, которые вы можете использовать для общих задач.

Полный оригинал статьи вы можете посмотреть здесь: https://blog.insightdatascience.com

Поиск по сайту