Введение в Apache Airflow

Введение в Apache Airflow Изучение

Если вы работаете с большими данными, вы, скорее всего, слышали об Apache Airflow. Он начался как проект с открытым исходным кодом в Airbnb в 2014 году, чтобы помочь компании справиться с конвейерами пакетных данных. С тех пор она стала одной из самых популярных платформ для управления рабочими процессами с открытым исходным кодом в инженерии данных.

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

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

Что такое Apache Airflow?

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

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

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

Воздушный поток используется во многих отраслях:

  • Большое количество данных
  • Машинное обучение
  • Программное обеспечение
  • Финансовые услуги
  • IT услуги
  • Банковское дело
  • И т.п.

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

Чем отличается Apache Airflow?

Ниже перечислены некоторые различия между Airflow и другими платформами управления рабочими процессами.

  • Направленные ациклические графы (DAG) написаны на Python, который имеет плавную кривую обучения и более широко используется, чем Java, которую использует Oozie.
  • Существует большое сообщество, которое вносит свой вклад в Airflow, что упрощает поиск интеграционных решений для основных сервисов и поставщиков облачных услуг.
  • Airflow универсален, выразителен и создан для создания сложных рабочих процессов. Он предоставляет расширенные метрики рабочих процессов.
  • Airflow имеет богатый API и интуитивно понятный пользовательский интерфейс по сравнению с другими платформами управления рабочими процессами.
  • Использование шаблонов Jinja позволяет использовать такие сценарии, как ссылка на имя файла, соответствующее дате запуска DAG.
  • Есть управляемые облачные сервисы Airflow, такие как Google Composer и Astronomer.io.

Зачем использовать Apache Airflow?

В этом разделе мы рассмотрим некоторые плюсы и минусы Airflow, а также некоторые известные варианты использования.

Плюсы:

  • Открытый исходный код: вы можете загрузить Airflow и сразу же начать его использовать, а также работать с коллегами в сообществе.
  • Интеграция с облаком: Airflow хорошо работает в облачных средах, предоставляя множество возможностей.
  • Масштабируемость: воздушный поток легко масштабируется вверх и вниз. Его можно развернуть на одном сервере или масштабировать до крупных развертываний с множеством узлов.
  • Гибкость и настраиваемость: Airflow был создан для работы со стандартной архитектурой большинства сред разработки программного обеспечения, но его гибкость предоставляет множество возможностей настройки.
  • Возможности мониторинга: Airflow позволяет использовать различные способы мониторинга. Например, вы можете просматривать статус ваших задач из пользовательского интерфейса.
  • Платформа Code-first: эта зависимость от кода дает вам свободу писать, какой код вы хотите выполнять на каждом этапе конвейера.
    Сообщество: большое и активное сообщество Airflow помогает масштабировать информацию и дает возможность общаться с вашими коллегами.
Читайте также:  LVM: как сделать снимок тома или каталога

Минусы:

  • Опора на Python: хотя многие считают, что Airflow так сильно полагается на код Python, это хорошо, но тем, у кого нет большого опыта работы с Python, может потребоваться более крутая кривая обучения.
  • Сбои: хотя Airflow обычно надежен, могут быть сбои, как и в любом продукте.

Сценарии использования

Airflow можно использовать практически для всех конвейеров пакетных данных, и существует множество различных задокументированных случаев использования, наиболее распространенными из которых являются проекты, связанные с большими данными. Вот несколько примеров использования, перечисленных в репозитории Airflow на Github:

  • Использование Airflow с Google BigQuery для управления приборной панелью Data Studio
  • Использование Airflow для разработки и управления озером данных на AWS
  • Использование Airflow для повышения производительности при минимальном времени простоя

Основы Apache Airflow

Теперь, когда мы обсудили основы Airflow, а также преимущества и варианты использования, давайте погрузимся в основы этой надежной платформы.

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

Рабочие процессы определяются с помощью направленных ациклических графов (DAG), которые состоят из задач, которые должны быть выполнены, вместе с их связанными зависимостями. Каждая группа DAG представляет группу задач, которые вы хотите запустить, и они показывают отношения между задачами в пользовательском интерфейсе Apache Airflow. Давайте разберемся с аббревиатурой:

  • Направленный: если у вас есть несколько задач с зависимостями, каждой из них требуется хотя бы одна указанная восходящая или нисходящая задача.
  • Ациклический: задачам не разрешено создавать данные, которые ссылаются на себя. Это позволяет избежать возможности создания бесконечного цикла.
  • График: задачи находятся в логической структуре с четко определенными процессами и отношениями с другими задачами. Например, мы можем использовать DAG, чтобы выразить взаимосвязь между тремя задачами: X, Y и Z. Мы могли бы сказать: «выполнить Y только после выполнения X, но Z может выполняться независимо в любое время». Мы можем определить дополнительные ограничения, такие как количество повторных попыток выполнения невыполненной задачи и время начала задачи.

Примечание. Группа DAG определяет, как выполнять задачи, но не определяет, что именно делают.

DAG можно указать, создав экземпляр объекта airflow.models.dag.DAG, как показано в приведенном ниже примере. DAG будет отображаться в пользовательском интерфейсе веб-сервера как «Example1» и будет запущен один раз.

dag = DAG(‘Example1’,
          schedule_interval=’@once’,
          start_date=days_ago(1),)

DAG run

Когда DAG выполняется, это называется запуском DAG. Допустим, у вас есть DAG, который будет запускаться каждый час. Каждый экземпляр этого DAG запускает DAG. Одновременно может быть несколько запусков DAG, подключенных к DAG.

Задачи

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

Задачи представляют собой экземпляры операторов

Операторы

В то время как группы DAG определяют рабочий процесс, операторы определяют работу. Оператор подобен шаблону или классу для выполнения определенной задачи. Все операторы происходят из BaseOperator. Есть операторы для многих общих задач, таких как:

  • PythonOperator
  • MySqlOperator
  • EmailOperator
  • BashOperator

Эти операторы используются для указания действий, выполняемых в Python, MySQL, электронной почте или bash.

Есть три основных типа операторов:

  1. Операторы, которые выполняют действие или запрашивают другую систему для выполнения действия.
  2. Операторы, перемещающие данные из одной системы в другую
  3. Операторы, которые работают до тех пор, пока не будут выполнены определенные условия

Крючки

Хуки позволяют Airflow взаимодействовать со сторонними системами. С помощью хуков вы можете подключаться к внешним базам данных и API, таким как MySQL, Hive, GCS и другим. Они похожи на строительные блоки для операторов. В хуках не содержится никакой защищенной информации. Он хранится в базе данных зашифрованных метаданных Airflow.

Читайте также:  Руководство по Docker для новичков: что такое контейнер?

Примечание. У Apache Airflow есть поддерживаемые сообществом пакеты, которые включают ядро operatorsи hooksтакие сервисы, как Google и Amazon. Их можно установить непосредственно в среде Airflow.

Отношения

Воздушный поток превосходит определение сложных отношений между задачами. Допустим, мы хотим указать, что задача t1выполняется перед задачей t2. Есть четыре различных утверждения, которые мы могли бы использовать для определения этого точного отношения:

t2.set_upstream(t1)
t1.set_downstream(t2)
t1 >> t2
t2 << t1

Как работает Apache Airflow?

Как работает Apache Airflow

Общая картина Архитектура Apache Airflow

Эту надежную и масштабируемую платформу планирования рабочих процессов составляют четыре основных компонента:

  • Планировщик: планировщик отслеживает все группы DAG и связанные с ними задачи. Когда зависимости для задачи соблюдены, планировщик инициирует задачу. Он периодически проверяет активные задачи для запуска.
  • Веб-сервер: Веб-сервер — это пользовательский интерфейс Airflow. Он показывает состояние заданий и позволяет пользователю взаимодействовать с базами данных и читать файлы журналов из удаленных файловых хранилищ, таких как S3, Google Cloud Storage, большие двоичные объекты Microsoft Azure и т. Д.
  • База данных: состояние групп DAG и связанных с ними задач сохраняется в базе данных, чтобы расписание запомнило информацию метаданных. Airflow использует SQLAlchemy и объектно-реляционное сопоставление (ORM) для подключения к базе данных метаданных. Планировщик проверяет все группы обеспечения доступности баз данных и сохраняет соответствующую информацию, такую ​​как интервалы расписания, статистику каждого запуска и экземпляры задач.
  • Исполнитель: Исполнитель решает, как будет выполняться работа. Существуют разные типы исполнителей, которые можно использовать для разных сценариев использования.

Примеры исполнителей:

  • SequentialExecutor: Этот исполнитель может запускать отдельную задачу в любой момент времени. Он не может запускать задачи параллельно. Это полезно при тестировании или отладке ситуаций.
  • LocalExecutor: Этот исполнитель обеспечивает параллелизм и гиперпоточность. Он отлично подходит для запуска Airflow на локальном компьютере или отдельном узле.
  • CeleryExecutor: Этот исполнитель является предпочтительным способом запуска распределенного кластера Airflow.
  • KubernetesExecutor: Этот исполнитель вызывает Kubernetes API, чтобы создать временные поды для каждого экземпляра задачи для запуска.

Итак, как работает Airflow?

Airflow проверяет все группы DAG в фоновом режиме за определенный период. Этот период устанавливается с помощью processor_poll_intervalконфига и равен одной секунде. После проверки файла DAG запускается DAG в соответствии с параметрами планирования. Экземпляры задач создаются для задач, которые необходимо выполнить, и их статус устанавливается SCHEDULEDв базу данных метаданных.

Расписание запрашивает базу данных, извлекает задачи в SCHEDULEDсостоянии и распределяет их по исполнителям. Затем состояние задачи изменится на QUEUED. Эти поставленные в очередь задачи извлекаются из очереди рабочими, которые их выполняют. В этом случае статус задачи меняется на RUNNING.

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

Первые шаги по работе с Apache Airflow

Теперь, когда вы знаете основы Apache Airflow, вы готовы приступить к работе! Отличный способ изучить этот инструмент — построить что-нибудь с его помощью. После загрузки Airflow вы можете создать свой собственный проект или внести свой вклад в проект с открытым исходным кодом в Интернете.

Несколько интересных проектов с открытым исходным кодом:

  • Плагин, позволяющий редактировать DAG-файлы в браузере.
  • Докер Apache Airflow
  • Динамически генерировать DAG из файлов конфигурации YAML
  • И больше

Еще многое предстоит узнать об Airflow. Вот некоторые рекомендуемые темы для обсуждения:

  • SubDAG
  • SLA
  • Датчики воздушного потока
Оцените статью
bestprogrammer.ru
Добавить комментарий