Airflow — инструмент, чтобы удобно и быстро разрабатывать и поддерживать batch-процессы обработки данных / Хабр
Привет, Хабр! В этой статье я хочу рассказать об одном замечательном инструменте для разработки batch-процессов обработки данных, например, в инфраструктуре корпоративного DWH или вашего DataLake. Речь пойдет об Apache Airflow (далее Airflow). Он несправедливо обделен вниманием на Хабре, и в основной части я попытаюсь убедить вас в том, что как минимум на Airflow стоит смотреть при выборе планировщика для ваших ETL/ELT-процессов.
Ранее я писал серию статей на тему DWH, когда работал в Тинькофф Банке. Теперь я стал частью команды Mail.Ru Group и занимаюсь развитием платформы для анализа данных на игровом направлении. Собственно, по мере появления новостей и интересных решений мы с командой будем рассказывать тут о нашей платформе для аналитики данных.
Пролог
Итак, начнем. Что такое Airflow? Это библиотека (ну или набор библиотек) для разработки, планирования и мониторинга рабочих процессов. Основная особенность Airflow: для описания (разработки) процессов используется код на языке Python. Отсюда вытекает масса преимуществ для организации вашего проекта и разработки: по сути, ваш (например) ETL-проект — это просто Python-проект, и вы можете его организовывать как вам удобно, учитывая особенности инфраструктуры, размер команды и другие требования. Инструментально всё просто. Используйте, например, PyCharm + Git. Это прекрасно и очень удобно!
Теперь рассмотрим основные сущности Airflow. Поняв их суть и назначение, вы оптимально организуете архитектуру процессов. Пожалуй, основная сущность — это Directed Acyclic Graph (далее DAG).
DAG
DAG — это некоторое смысловое объединение ваших задач, которые вы хотите выполнить в строго определенной последовательности по определенному расписанию. Airflow представляет удобный web-интерфейс для работы с DAG’ами и другими сущностями:
DAG может выглядеть таким образом:
Разработчик, проектируя DAG, закладывает набор операторов, на которых будут построены задачи внутри DAG’а. Тут мы приходим еще к одной важной сущности: Airflow Operator.
Операторы
Оператор — это сущность, на основании которой создаются экземпляры заданий, где описывается, что будет происходить во время исполнения экземпляра задания. Релизы Airflow с GitHub уже содержат набор операторов, готовых к использованию. Примеры:
- BashOperator — оператор для выполнения bash-команды.
- PythonOperator — оператор для вызова Python-кода.
- EmailOperator — оператор для отправки email’а.
- HTTPOperator — оператор для работы с http-запросами.
- SqlOperator — оператор для выполнения SQL-кода.
- Sensor — оператор ожидания события (наступления нужного времени, появления требуемого файла, строки в базе БД, ответа из API — и т. д., и т. п.).
Есть более специфические операторы: DockerOperator, HiveOperator, S3FileTransferOperator, PrestoToMysqlOperator, SlackOperator.
Вы также можете разрабатывать операторы, ориентируясь на свои особенности, и использовать их в проекте.
Далее все эти экземпляры задачек нужно выполнять, и теперь речь пойдет о планировщике.
Планировщик
Планировщик задач в Airflow построен на Celery. Celery — это Python-библиотека, позволяющая организовать очередь плюс асинхронное и распределенное исполнение задач. Со стороны Airflow все задачи делятся на пулы. Пулы создаются вручную. Как правило, их цель — ограничить нагрузку на работу с источником или типизировать задачи внутри DWH. Пулами можно управлять через web-интерфейс:
Каждый пул имеет ограничение по количеству слотов. При создании DAG’а ему задается пул:
ALERT_MAILS = Variable.get("gv_mail_admin_dwh") DAG_NAME = 'dma_load' OWNER = 'Vasya Pupkin' DEPENDS_ON_PAST = True EMAIL_ON_FAILURE = True EMAIL_ON_RETRY = True RETRIES = int(Variable.get('gv_dag_retries')) POOL = 'dma_pool' PRIORITY_WEIGHT = 10 start_dt = datetime.today() - timedelta(1) start_dt = datetime(start_dt.year, start_dt.month, start_dt.day) default_args = { 'owner': OWNER, 'depends_on_past': DEPENDS_ON_PAST, 'start_date': start_dt, 'email': ALERT_MAILS, 'email_on_failure': EMAIL_ON_FAILURE, 'email_on_retry': EMAIL_ON_RETRY, 'retries': RETRIES, 'pool': POOL, 'priority_weight': PRIORITY_WEIGHT } dag = DAG(DAG_NAME, default_args=default_args) dag.doc_md = __doc__
Пул, заданный на уровне DAG’а, можно переопределить на уровне задачи.
За планировку всех задач в Airflow отвечает отдельный процесс — Scheduler. Собственно, Scheduler занимается всей механикой постановки задачек на исполнение. Задача, прежде чем попасть на исполнение, проходит несколько этапов:
- В DAG’е выполнены предыдущие задачи, новую можно поставить в очередь.
- Очередь сортируется в зависимости от приоритета задач (приоритетами тоже можно управлять), и, если в пуле есть свободный слот, задачу можно взять в работу.
- Если есть свободный worker celery, задача направляется в него; начинается работа, которую вы запрограммировали в задачке, используя тот или иной оператор.
Достаточно просто.
Scheduler работает на множестве всех DAG’ов и всех задач внутри DAG’ов.
Чтобы Scheduler начал работу с DAG’ом, DAG’у нужно задать расписание:
dag = DAG(DAG_NAME, default_args=default_args, schedule_interval='@hourly')
Есть набор готовых preset’ов: @once
, @hourly
, @daily
, @weekly
, @monthly
, @yearly
.
Также можно использовать cron-выражения:
dag = DAG(DAG_NAME, default_args=default_args, schedule_interval='*/10 * * * *')
Execution Date
Чтобы разобраться в том, как работает Airflow, важно понимать, что такое Execution Date для DAG’а. В Airflow DAG имеет измерение Execution Date, т. е. в зависимости от расписания работы DAG’а создаются экземпляры задачек на каждую Execution Date. И за каждую Execution Date задачи можно выполнить повторно — или, например, DAG может работать одновременно в нескольких Execution Date. Это наглядно отображено здесь:
К сожалению (а может быть, и к счастью: зависит от ситуации), если правится реализация задачки в DAG’е, то выполнение в предыдущих Execution Date пойдет уже с учетом корректировок. Это хорошо, если нужно пересчитать данные в прошлых периодах новым алгоритмом, но плохо, потому что теряется воспроизводимость результата (конечно, никто не мешает вернуть из Git’а нужную версию исходника и разово посчитать то, что нужно, так, как нужно).
Генерация задач
Реализация DAG’а — код на Python, поэтому у нас есть очень удобный способ сократить объем кода при работе, например, с шардированными источниками. Пускай у вас в качестве источника три шарда MySQL, вам нужно слазить в каждый и забрать какие-то данные. Причем независимо и параллельно. Код на Python в DAG’е может выглядеть так:
connection_list = lv.get('connection_list') export_profiles_sql = ''' SELECT id, user_id, nickname, gender, {{params.shard_id}} as shard_id FROM profiles ''' for conn_id in connection_list: export_profiles = SqlToHiveViaHdfsTransfer( task_id='export_profiles_from_' + conn_id, sql=export_profiles_sql, hive_table='stg.profiles', overwrite=False, tmpdir='/data/tmp', conn_id=conn_id, params={'shard_id': conn_id[-1:], }, compress=None, dag=dag ) export_profiles.set_upstream(exec_truncate_stg) export_profiles.set_downstream(load_profiles)
DAG получается таким:
При этом можно добавить или убрать шард, просто скорректировав настройку и обновив DAG. Удобно!
Можно использовать и более сложную генерацию кода, например работать с источниками в виде БД или описывать табличную структуру, алгоритм работы с таблицей и с учетом особенностей инфраструктуры DWH генерировать процесс загрузки N таблиц к вам в хранилище.
Или же, например, работу с API, которое не поддерживает работу с параметром в виде списка, вы можете сгенерировать по этому списку N задач в DAG’е, ограничить параллельность запросов в API пулом и выгрести из API необходимые данные. Гибко!Репозиторий
В Airflow есть свой бекенд-репозиторий, БД (может быть MySQL или Postgres, у нас Postgres), в которой хранятся состояния задач, DAG’ов, настройки соединений, глобальные переменные и т. д., и т. п. Здесь хотелось бы сказать, что репозиторий в Airflow очень простой (около 20 таблиц) и удобный, если вы хотите построить какой-либо свой процесс над ним. Вспоминается 100500 таблиц в репозитории Informatica, которые нужно было долго вкуривать, прежде чем понять, как построить запрос.
Мониторинг
Учитывая простоту репозитория, вы можете сами построить удобный для вас процесс мониторинга задачек. Мы используем блокнот в Zeppelin, где смотрим состояние задач:
Это может быть и web-интерфейс самого Airflow:
Код Airflow открыт, поэтому мы у себя добавили алертинг в Telegram. Каждый работающий инстанс задачи, если происходит ошибка, спамит в группу в Telegram, где состоит вся команда разработки и поддержки.
Получаем через Telegram оперативное реагирование (если такое требуется), через Zeppelin — общую картину по задачам в Airflow.
Итого
Airflow в первую очередь open source, и не нужно ждать от него чудес. Будьте готовы потратить время и силы на то, чтобы выстроить работающее решение. Цель из разряда достижимых, поверьте, оно того стоит. Скорость разработки, гибкость, простота добавления новых процессов — вам понравится. Конечно, нужно уделять много внимания организации проекта, стабильности работы самого Airflow: чудес не бывает.
Сейчас у нас Airflow ежедневно отрабатывает около 6,5 тысячи задач. По характеру они достаточно разные. Есть задачи загрузки данных в основное DWH из множества разных и очень специфических источников, есть задачи расчета витрин внутри основного DWH, есть задачи публикации данных в быстрое DWH, есть много-много разных задач — и Airflow все их пережевывает день за днем. Если же говорить цифрами, то это 2,3 тысячи ELT задач различной сложности внутри DWH (Hadoop), около 2,5 сотен баз данных источников, это команда из 4-ёх ETL разработчиков, которые делятся на ETL процессинг данных в DWH и на ELT процессинг данных внутри DWH и конечно ещё одного админа, который занимается инфраструктурой сервиса.
Планы на будущее
Количество процессов неизбежно растет, и основное, чем мы будем заниматься в части инфраструктуры Airflow, — это масштабирование. Мы хотим построить кластер Airflow, выделить пару ног для worker’ов Celery и сделать дублирующую себя голову с процессами планировки заданий и репозиторием.
Эпилог
Это, конечно, далеко не всё, что хотелось бы рассказать об Airflow, но основные моменты я постарался осветить. Аппетит приходит во время еды, попробуйте — и вам понравится 🙂
Apache Airflow для аналитика — Stepik
Этот курс будет полезен всем кто работает с данными, и хочет познакомиться с новым инструментом. Airflow это, де факто, стандарт современного ETL, многие крупные компании уже внедрили его в свои процессы. Для получения промокода 20% пишите в телеграм чат. Ссылка ниже.
About this course
Добро пожаловать на курс Apache Airflow для аналитиков данных
Задать вопросы перед прохождением курса и получить СКИДКУ 20% можно здесь!Что вас ждёт- Текстовые/видео материалы и Google Colab по основам Airflow
- Много практических заданий с проверкой преподавателя
- Множество тестов для самопроверки
- Экзамен тестирование чтобы повторить материал
Как устроен курс
- Краткий текстовый материал по теме, я старался писать простыми словами без воды, плюс видеоматериал
- Практика в Google Colab, чтобы попробовать руками то о чём только что прочитал
- Тестовые задания или практическая работа с проверкой преподавателем.
Какие темы затронем
- Разберем что такое пайплайн и зачем нам DAG
- Изучим основы Airflow и напишем первый скрипт
- Разберемся с архитектурой и интерфейсом
- Погрузимся в best practices по разработке
- Установим свой Airflow в Docker
Преподаватель на связи
Отвечаю на вопросы, проверяю практические задачки, если что то не работает обязательно разберемся чтобы заработало!
Что после?
После курса полученных знаний должно хватить чтобы внедрить этот инструмент у себя на работе, или пройти собеседование на позицию ETL девелопера.
P.S Просто не будет 😬, придется заниматься, читать статьи и писать код. В курс включены обновления и дополнения после прохождения 🆙🆙🆙
Whom this course is for
Начинающие аналитики, дата саентисты и ETL девелоперы которые хотят внедрить у себя данный инструмент или пройти собеседование в компанию в которой используют Airflow.
Initial requirements
Курс предназначен для новичков+ которые уже умеют писать код на Питоне и готовы разбираться с новыми для себя темами.
Точно нужны знания этого курса. Для комфортного прохождения стоит изучить первые 2 модуля данного курса. Также на курсе есть немного SQL, и лучше уметь с ним обращаться, например первые 2 модуля этого курса
Meet the Instructors
Course content
Certificate
В курсе предусмотрен сертификат, обычный получат все кто пройдет 5 модулей, с отличием те кто защитит экзамен.
Price
FAQ
How to purchase the course in installments?
How to pay from the company?
https://stepik.org/course/99527/promo
Direct link:
https://stepik.org/99527
Установка — Документация по воздушному потоку
Использование выпущенных исходников
Использование PyPI
Использование рабочих образов Docker
Использование официальной таблицы Airflow Helm
Использование служб управляемого воздушного потока
Использование сторонних изображений, диаграмм, развертываний
На этой странице описаны варианты установки, которые вы можете использовать при рассмотрении вопроса об установке Airflow.
Airflow состоит из множества компонентов, часто распределенных между многими физическими или виртуальными машинами, поэтому установка Airflow может быть довольно сложной, в зависимости от выбранных вами параметров.Вы также должны проверить предварительные условия, которые должны быть выполнены при установке Airflow а также Поддерживаемые версии, чтобы узнать, каковы политики поддержки Airflow, Python и Kubernetes.
Airflow требует установки дополнительных зависимостей — что можно сделать через дополнения и провайдеров.
При установке Airflow необходимо настроить базу данных, которая должна также обновляться при обновлении Airflow.
Предупреждение
По состоянию на июнь 2021 г. Airflow 1.10 устарела и не получит никаких исправлений, даже критических. исправления безопасности. Следите за обновлениями с 1.10 до 2, чтобы узнать как обновить устаревшую версию 1.10 до Airflow 2.
Подробнее: Установка из исходников
Когда этот вариант работает лучше всего
Этот вариант лучше всего подходит, если вы планируете собирать все свое программное обеспечение из исходников.
Apache Airflow — один из проектов, принадлежащих Apache Software Foundation. Для всех проектов ASF требуется, чтобы они могли быть установлены с использованием официальных исходных кодов, опубликованных через Official Apache Downloads.
Это лучший выбор, если вам необходимо проверить целостность и происхождение программного обеспечения
Предполагаемые пользователи
С чем вы собираетесь работать
Предполагается, что вы самостоятельно создадите и установите воздушный поток и его компоненты.
Вы должны разработать и выполнить развертывание всех компонентов Airflow.
Вы отвечаете за настройку базы данных, создание схемы базы данных и управление ею с помощью команд
airflow db
, автоматизированный запуск и восстановление, обслуживание, очистка и обновления Airflow и поставщиков Airflow.
Что Apache Airflow Community предоставляет для этого метода
У вас есть инструкции по сборке программного обеспечения, но из-за различных сред и инструменты, которые вы, возможно, захотите использовать, вы можете ожидать, что возникнут проблемы, характерные для вашего развертывания и среды. вам придется диагностировать и решать.
Куда обратиться за помощью
#development
резервный канал для создания программного обеспечения.Slack
#troubleshooting
— это канал для быстрых общих вопросов по устранению неполадок. Обсуждения GitHub, если вы ищете более продолжительное обсуждение и хотите поделиться дополнительной информацией.Если вы можете предоставить описание воспроизводимой проблемы с программным обеспечением Airflow, вы можете открыть проблему на GitHub Issues
Подробнее: Установка из PyPI
Когда этот вариант работает лучше всего
Этот метод установки удобен, если вы не знакомы с контейнерами и Docker и хотите установить Apache Airflow на физических или виртуальных машинах, и вы привыкли устанавливать и запускать программное обеспечение с помощью механизм развертывания.
Единственный официально поддерживаемый механизм установки — через
pip
с использованием механизмов ограничений. Ограничение файлы управляются менеджерами выпусков Apache Airflow, чтобы убедиться, что вы можете повторно установить Airflow из PyPI со всеми поставщиками и требуемые зависимости.В случае установки PyPI вы также можете проверить целостность и происхождение пакетов пакетов загружается из PyPI, как описано на странице установки, но программное обеспечение, которое вы загружаете из PyPI, предварительно собрано для вас, чтобы вы могли установить его без сборки, и вы не собирали программное обеспечение из исходников.
Предполагаемые пользователи
С чем вы собираетесь работать
Предполагается, что вы установите Airflow — все его компоненты — самостоятельно.
Вы должны разработать и выполнить развертывание всех компонентов Airflow.
Вы отвечаете за настройку базы данных, создание схемы базы данных и управление ею с помощью команд
airflow db
, автоматизированный запуск и восстановление, обслуживание, очистка и обновление Airflow и Airflow Providers.
Что Apache Airflow Community предоставляет для этого метода
У вас есть установка из PyPI о том, как установить программное обеспечение, но из-за различных сред и инструментов, которые вы, возможно, захотите использовать, вы можете ожидайте, что возникнут проблемы, характерные для вашего развертывания и среды, которые вам придется решать. диагностировать и решить.
У вас есть Quick Start, где вы можете увидеть пример Quick Start с запущенным Airflow локально, который вы можете использовать для быстрого запуска Airflow для локального тестирования и разработки. Однако это всего лишь вдохновение. Не ожидайте, что этот docker-compose готов к производственной установке, при таком подходе вам необходимо создать собственное готовое к работе развертывание.
Куда обратиться за помощью
#устранение неполадок 9Канал 0080 на Airflow Slack для быстрого общего вопросы по устранению неполадок. Обсуждения на GitHub если вы ищете более продолжительное обсуждение и хотите поделиться дополнительной информацией.
Если вы можете предоставить описание воспроизводимой проблемы с программным обеспечением Airflow, вы можете открыть выпуск на GitHub выпускает
Дополнительные сведения: Образ Docker для Apache Airflow
Когда этот вариант работает лучше всего
Этот метод установки полезен, если вы знакомы со стеком Container/Docker. Он обеспечивает возможность запуск компонентов Airflow изолированно от другого программного обеспечения, работающего на тех же физических или виртуальных машинах, с помощью простого поддержание зависимостей.
Образы создаются менеджерами выпусков Apache Airflow и используют официально выпущенные пакеты из PyPI. и официальные файлы ограничений — те же, что используются для установки Airflow из PyPI.
Предполагаемые пользователи
Пользователи, которые знакомы с контейнерами и стеком Docker и понимают, как создавать собственные образы контейнеров.
Пользователи, которые понимают, как устанавливать поставщиков и зависимости от PyPI с ограничениями, если они хотят расширить или настроить образ.
Пользователи, которые знают, как создавать развертывания с помощью Docker, связывая вместе несколько контейнеров Docker и поддерживая такие развертывания.
Что вы должны обрабатывать
Ожидается, что вы сможете настраивать или расширять образы Container/Docker, если хотите добавить дополнительные зависимости. Ожидается, что вы соберете развертывание, состоящее из нескольких контейнеров. (например, используя docker-compose) и убедиться, что они связаны друг с другом.
Вы отвечаете за настройку базы данных, создание схемы базы данных и управление ею с помощью команд
airflow db
, автоматизированный запуск и восстановление, обслуживание, очистка и обновления Airflow и поставщиков Airflow.Вы несете ответственность за управление собственными настройками и расширениями для ваших пользовательских зависимостей. С официальными образами Airflow Docker обновления Airflow и Airflow Providers, которые являются частью эталонного изображения, обрабатываются сообществом — вам нужно обязательно подобрать эти изменения при выпуске путем обновления базового образа. Однако вы несете ответственность за создание конвейер создания ваших собственных пользовательских образов с вашими собственными добавленными зависимостями и провайдерами, и вам нужно повторите шаг настройки и создайте собственный образ, когда будет выпущена новая версия образа Airflow.
Следует выбрать правильный механизм развертывания. Существует ряд доступных вариантов развертывание контейнеров. Вы можете использовать свой собственный настраиваемый механизм, настраиваемые развертывания Kubernetes, настраиваемый Docker Compose, настраиваемые диаграммы Helm и т. д., и вам следует выбирать их в зависимости от вашего опыта. и ожидания.
Что Apache Airflow Community предоставляет для этого метода
У вас есть инструкции: Создание образа о том, как создать и настроить свой образ.
У вас есть работающий поток воздуха в Docker, где вы можете увидеть пример быстрого запуска, который вы можете использовать для быстрого запуска Airflow для локального тестирования и разработки. Однако это всего лишь вдохновение. Не рассчитывайте использовать этот файл
docker-compose.yml
для производственной установки, вам нужно ознакомиться с Docker Compose и его возможностями и создайте с его помощью собственное готовое к работе развертывание, если вы выбираете Docker Compose для своего развертывания.Образ Docker управляется теми же людьми, которые создают Airflow, и они обязуются поддерживать он обновляется всякий раз, когда выпускаются новые функции и возможности Airflow.
Куда обратиться за помощью
Для быстрых вопросов по официальному образу Docker есть канал
#production-docker-image
в Airflow Slack.Канал
#troubleshooting
в Airflow Slack для быстрого общего вопросы по устранению неполадок. Обсуждения на GitHub если вы ищете более продолжительное обсуждение и хотите поделиться дополнительной информацией.Если вы можете предоставить описание воспроизводимой проблемы с программным обеспечением Airflow, вы можете открыть выпуск на GitHub выпускает
Подробнее: Helm Chart для Apache Airflow
Когда этот вариант работает лучше всего
Этот метод установки полезен, если вы не только знакомы со стеком Container/Docker, но и когда использовать Kubernetes и хотите установить и поддерживать Airflow с помощью установки Kubernetes, управляемой сообществом механизм через диаграмму Хельма.
Он обеспечивает не только возможность запуска компонентов Airflow отдельно от другого программного обеспечения. работает на тех же физических или виртуальных машинах и управляет зависимостями, но также предоставляет возможности более простое обслуживание, настройка и обновление Airflow таким образом, который стандартизирован и будет поддерживаться сообществом.
The Chart использует официальные образы Docker Airflow Production для запуска Airflow.
Предполагаемые пользователи
Пользователи, которые знакомы с контейнерами и стеком Docker и понимают, как создавать собственные образы контейнеров.
Пользователи, которые понимают, как устанавливать поставщиков и зависимости от PyPI с ограничениями, если они хотят расширить или настроить образ.
Пользователи, которые управляют своей инфраструктурой с помощью Kubernetes и управляют своими приложениями в Kubernetes с помощью Helm Charts.
Что вы должны обрабатывать
Предполагается, что вы сможете настраивать или расширять образы Container/Docker, если хотите. добавить дополнительные зависимости. Ожидается, что вы соберете развертывание, состоящее из нескольких контейнеров. (например, с помощью Docker Compose) и убедиться, что они связаны друг с другом.
Вы отвечаете за настройку базы данных.
The Helm Chart управляет схемой вашей базы данных, автоматизирует запуск, восстановление и перезапуск компоненты приложения и связывание их вместе, поэтому вам не нужно об этом беспокоиться.
Вы несете ответственность за управление собственными настройками и расширениями для ваших пользовательских зависимостей. С официальными образами Airflow Docker обновления Airflow и Airflow Providers, которые являются частью эталонного изображения, обрабатываются сообществом — вам нужно обязательно подобрать эти изменения при выпуске путем обновления базового образа. Однако вы несете ответственность за создание конвейер создания ваших собственных пользовательских образов с вашими собственными добавленными зависимостями и провайдерами, и вам нужно повторите шаг настройки и создайте собственный образ, когда будет выпущена новая версия образа Airflow.
Что Apache Airflow Community предоставляет для этого метода
У вас есть инструкции: Создание образа о том, как создать и настроить свой образ.
У вас есть Helm Chart для Apache Airflow — полная документация по настройке и установке Helm Chart.
The Helm Chart управляется теми же людьми, которые создают Airflow, и они стремятся сохранить он обновляется всякий раз, когда выпускаются новые функции и возможности Airflow.
Куда обратиться за помощью
Для быстрых вопросов по официальному образу Docker есть канал
#production-docker-image
в Airflow Slack.Для быстрых вопросов по официальной диаграмме Helm есть канал
#helm-chart-official
в Slack.Канал
#troubleshooting
в Airflow Slack для быстрого общего вопросы по устранению неполадок. Обсуждения на GitHub если вы ищете более продолжительное обсуждение и хотите поделиться дополнительной информацией.Если вы можете предоставить описание воспроизводимой проблемы с программным обеспечением Airflow, вы можете открыть выпуск на GitHub выпускает
Перейдите на страницу экосистемы, чтобы найти все управляемые службы для воздушного потока.
Когда этот вариант работает лучше всего
Предполагаемые пользователи
Что вы должны обрабатывать
Какую помощь Apache Airflow Community предоставляет для этого метода 9 00444
Где спросить0044Первым выбором должна быть поддержка, предоставляемая управляемыми службами. Есть несколько каналы в Apache Airflow Slack, предназначенные для разных групп пользователей, и если у вас есть прийти к выводу, что вопрос больше связан с Airflow, чем с управляемой службой, вы можете использовать эти каналы.
Перейдите на страницу «Экосистема», чтобы найти все варианты развертывания сторонних производителей.
Когда этот вариант работает лучше всего
Эти методы установки полезны в случае, если ни один из официальных методов, упомянутых ранее, не работает для вас, или вы исторически использовали их. Однако рекомендуется, чтобы всякий раз, когда вы рассматриваете какие-либо изменения, вам следует подумать о переходе на один из методов, официально поддерживаемых Apache Airflow. Сообщество или управляемые службы.
Предполагаемые пользователи
Что вы должны обрабатывать
Что Apache Airflow Community предоставляет для этого метода
Куда обратиться за помощью
Обзор архитектуры — документация Airflow
Airflow — это платформа, позволяющая создавать и запускать рабочие процессы . Рабочий процесс представлен как DAG (направленный ациклический граф) и содержит отдельные части работы, называемые задачами, организованные с учетом зависимостей и потоков данных.
Группа обеспечения доступности баз данных определяет зависимости между задачами и порядок их выполнения и повторных попыток; Сами задачи описывают, что нужно делать, будь то получение данных, запуск анализа, запуск других систем и т. д.
Установка Airflow обычно состоит из следующих компонентов:
Планировщик, который обрабатывает запуск запланированных рабочих процессов и отправку задач исполнителю для выполнения.
Исполнитель, который обрабатывает запущенные задачи. В установке Airflow по умолчанию это запускает все внутри планировщика, но большинство исполнителей, пригодных для производства, фактически передают выполнение задачи рабочим .
Веб-сервер , который предоставляет удобный пользовательский интерфейс для проверки, запуска и отладки поведения DAG и задач.
Папка с файлами DAG , прочитанная планировщиком и исполнителем (и любыми рабочими процессами, имеющимися у исполнителя)
База данных метаданных , используемая планировщиком, исполнителем и веб-сервером для хранения состояния.
Большинство исполнителей, как правило, также вводят другие компоненты, позволяющие им общаться со своими работниками, например очередь задач, но вы все равно можете думать об исполнителе и его работниках как об одном логическом компоненте в Airflow в целом, обрабатывающем фактическое выполнение задачи.
Сам по себе Airflow не зависит от того, что вы используете — он с радостью организует и запустит что угодно, либо при поддержке высокого уровня от одного из наших поставщиков, либо непосредственно в виде команды с использованием оболочки или операторов Python.
Рабочие нагрузки
Группа обеспечения доступности баз данных выполняет ряд задач, и существует три общих типа задач, которые вы увидите:
Операторы, предопределенные задачи, которые можно быстро объединить для создания большинства частей вашей группы обеспечения доступности баз данных.
Сенсоры, особый подкласс Операторов, полностью ожидающих возникновения внешнего события.
Украшенный TaskFlow
@task
, представляющий собой пользовательскую функцию Python, упакованную как Task.
Внутренне все это на самом деле подклассы BaseOperator
Airflow, и понятия Task и Operator несколько взаимозаменяемы, но полезно думать о них как о отдельных понятиях — по сути, операторы и датчики — это шаблоны , и когда вы вызываете один из них в файле DAG, вы создаете задачу.
Поток управления
Группы обеспечения доступности баз данных предназначены для многократного запуска, и несколько их запусков могут выполняться параллельно. DAG параметризуются, всегда включая интервал, для которого они «выполняются» (интервал данных), но также и с другими необязательными параметрами.
Задачи имеют объявленные зависимости друг от друга. Вы увидите это в DAG, используя операторы >>
и <<
:
первая_задача >> [вторая_задача, третья_задача] четвертая_задача << третья_задача
Или с методами set_upstream
и set_downstream
:
first_task.set_downstream([second_task, Third_task]) четвертая_задача.set_upstream(третья_задача)
Эти зависимости составляют «ребра» графика и то, как Airflow определяет, в каком порядке выполнять ваши задачи. По умолчанию задача будет ждать, пока все ее вышестоящие задачи будут выполнены успешно, прежде чем она запустится, но это можно настроить с помощью таких функций, как Branching, LatestOnly и Trigger Rules.
Для передачи данных между задачами у вас есть три варианта:
XComs («Кросс-коммуникации»), система, в которой вы можете выполнять задачи, передающие и извлекающие небольшие фрагменты метаданных.
Загрузка и скачивание больших файлов из службы хранения (либо запущенной вами, либо части общедоступного облака)
API TaskFlow автоматически передает данные между задачами через неявные XCom
Airflow отправляет задачи для выполнения на рабочих процессах по мере освобождения места, поэтому нет гарантии, что все задачи в вашей DAG будут выполняться на одном рабочем процессе или на одной машине.
По мере того, как вы создаете свои DAG, они, вероятно, становятся очень сложными, поэтому Airflow предоставляет несколько механизмов для повышения устойчивости — SubDAG позволяют создавать «многоразовые» DAG, которые вы можете встраивать в другие, а TaskGroups позволяют визуально группировать задачи. в пользовательском интерфейсе.