Что такое airflow: Airflow — инструмент, чтобы удобно и быстро разрабатывать и поддерживать batch-процессы обработки данных

Содержание

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.

Вы также можете разрабатывать операторы, ориентируясь на свои особенности, и использовать их в проекте. Например, мы создали MongoDBToHiveViaHdfsTransfer, оператор экспорта документов из MongoDB в Hive, и несколько операторов для работы с ClickHouse: CHLoadFromHiveOperator и CHTableLoaderOperator. По сути, как только в проекте возникает часто используемый код, построенный на базовых операторах, можно задуматься о том, чтобы собрать его в новый оператор. Это упростит дальнейшую разработку, и вы пополните свою библиотеку операторов в проекте.

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


Планировщик

Планировщик задач в 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 занимается всей механикой постановки задачек на исполнение. Задача, прежде чем попасть на исполнение, проходит несколько этапов:


  1. В DAG’е выполнены предыдущие задачи, новую можно поставить в очередь.
  2. Очередь сортируется в зависимости от приоритета задач (приоритетами тоже можно управлять), и, если в пуле есть свободный слот, задачу можно взять в работу.
  3. Если есть свободный 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, но основные моменты я постарался осветить. Аппетит приходит во время еды, попробуйте — и вам понравится 🙂

Что такое AirFlow и как работает технология

Обработка данных в информационных системах чаще всего проводится в три этапа: извлечение, трансформация и загрузка (Extract Transform Load, ETL). В решениях, использующих Big Data, именно с помощью ETL исходные («сырые») данные преобразуются в информацию, пригодную для бизнес-анализа.

Однако с увеличением данных и усложнением аналитических задач увеличивается и количество ETL-процессов, которые необходимо планировать, отслеживать и перезапускать в случае сбоев — возникает необходимость в оркестраторе.

В статье расскажем об эффективном Open-Source инструменте Apache Airflow, который помогает в управлении сложными ETL-процессами и отлично сочетается с принципами Cloud-Native приложений.

Основные сущности AirFlow

Процессы обработки данных, или пайплайны, в Airflow описываются при помощи DAG (Directed Acyclic Graph). Это смысловое объединение задач, которые необходимо выполнить в строго определенной последовательности согласно указанному расписанию. Визуально DAG выглядит как направленный ациклический граф, то есть граф, не имеющий циклических зависимостей.

В качестве узлов DAG выступают задачи (Task). Это непосредственно операции, применяемые к данным, например: загрузка данных из различных источников, их агрегирование, индексирование, очистка от дубликатов, сохранение полученных результатов и прочие ETL-процессы. На уровне кода задачи могут представлять собой Python-функции или Bash-скрипты.

За реализацию задач чаще всего отвечают операторы (Operator). Если задачи описывают, какие действия выполнять с данными, то операторы — как эти действия выполнять. По сути, это шаблон для выполнения задач.

Особую группу операторов составляют сенсоры (Sensor), которые позволяют прописывать реакцию на определенное событие. В качестве триггера может выступать наступление конкретного времени, получение некоторого файла или строки с данными, другой DAG/Task и так далее.

В AirFlow богатый выбор встроенных операторов. Кроме этого, доступно множество специальных операторов — путем установки пакетов поставщиков, поддерживаемых сообществом. Также возможно добавление пользовательских операторов — за счет расширения базового класса BaseOperator. Когда в проекте возникает часто используемый код, построенный на стандартных операторах, рекомендуется его преобразование в собственный оператор.

Примеры операторов приведены ниже.

Чистка и осветление зубов AirFlow

Эффективная чистка и осветление эмали зубов

Современная стоматология предлагает широкий спектр гигиенических и косметических процедур. Одной из наиболее востребованных среди них является профессиональная чистка Air Flow. Она эффективно удалять зубной налет со всех зубных поверхностей, в том числе на труднодоступных участках. Чистка методом Air Flow осветляет эмаль примерно на 2-3 тона, делает зубы белоснежными и красивыми.

Что такое Air Flow?

Гигиеническая чистка зубов Air Flow — быстрый и безопасный способ удалить зубной налет и вернуть зубам их естественный (природный) цвет. В начале процедуры десны пациента накрываются специальным защитным материалом. Затем, с помощью аппарата Air Flow, поверхность зубов под большим давлением обрабатывается аэрозольной струей, которая содержит воду, воздух и особый порошок на основе бикарбоната натрия (соды). В заключение процедуры проводят фторирование зубов, чтобы восполнить недостаток нужных веществ в эмали и дентине и снизить повышенную чувствительность зубов после очищения.

Показания и противопоказания

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

Процедура абсолютно безопасна и все же имеет некоторые противопоказания и ограничения. Решение о проведении процедуры должен принимать врач-стоматолог на основании осмотра пациента и выяснении общего состояния его здоровья. Чистку Air Flow

не рекомендуют проводить детям, женщинам в период беременности и лактации, пациентам, страдающим астмой или хроническим бронхитом. Порошок, используемый при чистке, обладает лимонным вкусом, поэтому Air Flow противопоказана при непереносимости цитрусовых.

Чистка методом AirFlow или отбеливание зубов?

Ответ на этот вопрос зависит от того, к какому результату стремится пациент. Если он доволен природным оттенком своих зубов, то чистка и осветление зубов с применением пескоструйной технологии Air Flow раз в полгода — это то, что надо.

Для тех, кто недоволен натуральным оттенком своих зубов, чистка Air Flow может стать отличным стартом перед отбеливанием, таким как ZOOM! 4. Профессиональное отбеливание зубов системой ZOOM! 4 удаляет не только поверхностные, но и внутренние пигментации, и осветляет зубы на 8–12 тонов за 1 сеанс.

Как часто можно проводить данную процедуру?

Для поддержания естественного оттенка зубов и соблюдения гигиены полости рта, стоматологи рекомендуют проводить чистку зубов Air Flow 2 раза в год.

Введение в Apache Airflow

Также по теме Airflow:

Apache Airflow — это продвинутый workflow менеджер и незаменимый инструмент в арсенале современного дата инженера. Если смотреть открытые вакансии на позицию data engineer, то нередко встретишь опыт работы с Airflow как одно из требований к позиции.

Я разработал практический курс по Apache Airflow 2.0, он доступен на платформе StartDataJourney, создана она также мною. Сейчас есть возможность приобрести его с 15% скидкой по промокоду EARLYBIRD, действует до конца апреля 2021 года. Ввести промокод можно на этапе оформления заказа. Приятного обучения — Apache Airflow 2.0: практический курс.

Airflow был разработан в 2014 году в компании Airbnb, автор Maxime Beauchemin. Позже инструмент был передан под опеку в организацию Apache, а в январе 2019 получил статус Top-Level проекта. В этой статье я расскажу про установку, настройку и запуск первого дата пайплайна средствами Apache Airflow. К слову, в 2017 году я уже писал про не менее классный и простой инструмент Luigi от компании Spotify. По своей сути эти два инструмента похожи — оба предназначены для запуска цепочек задач (дата пайплайнов), но есть у них и ряд различий о которых я говорил во время своего выступления на PyCON Russia 2019:

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

DAG (Directed Acyclic Graph)

DAG — это ориентированный ациклический граф, т.е. граф у которого отсутствуют циклы, но могут быть параллельные пути, выходящие из одного и того же узла. Простыми словами DAG это сущность, объединяющая ваши задачи в единый data pipeline (или цепочку задач), где явно видны зависимости между узлами.

На картинке можно видеть классический DAG, где Task E является конечным в цепочке и зависит от всех задача слева от него.

Operator

Если вы знакомы с инструментом Luigi, то Operator в Airflow это аналог Task в Luigi. Оператор это звено в цепочке задач. Используя оператор разработчик описывает какую задачу необходимо выполнить. В Airflow есть ряд готовых операторов, например:

  • PythonOperator — оператор для исполнения python кода
  • BashOperator — оператор для запуска bash скриптов/команд
  • PostgresOperator — оператор для вызова SQL запросов в PostgreSQL БД
  • RedshiftToS3Transfer — оператор для запуска UNLOAD команды из Redshift в S3
  • EmailOperator — оператор для отправки электронных писем

Полный список стандартных операторов можно найти в документации Apache Airflow.

DAG является объединяющей сущностью для набора операторов, т.е. если вернуться к картинке выше, то Task A, Task B и т.д. это отдельные операторы.

Важно! Операторы не могут принимать возвращаемые значения от выполнения предыдущих операторов в цепочке (как, например, цепочка из вызовов функций), т.к. могут исполняться в разном адресном пространстве и даже на разных физических машинах.

Sensor

Сенсор это разновидность Operator, его удобно использовать при реализации событийно ориентированных пайплайнов. Из стандартного набора есть, например:

  • PythonSensor — ждём, когда функция вернёт True
  • S3Sensor — проверяет наличие объекта по ключу в S3-бакете
  • RedisPubSubSensor — проверяет наличие сообщения в pub-sub очереди
  • RedisKeySensor — проверяет существует ли переданный ключ в Redis хранилище

Это лишь малая часть доступных для использования сенсоров. Чтобы создать свой сенсор, достаточно унаследоваться от BaseSensorOperator и переопределить метод poke.

Hook

Хуки это внешние интерфейсы для работы с различными сервисами: базы данных, внешние API ресурсы, распределенные хранилища типа S3, redis, memcached и т.д. Хуки являются строительными блоками операторов и берут на себя всю логику по взаимодействию с хранилищем конфигов и доступов (о нём ниже). Используя хуки можно забыть про головную боль с хранением секретной информации в коде (пароли к доступам, например).

Установка

Apache Airflow состоит из нескольких частей:

  • Веб-приложение с панелью управления, написано на Flask
  • Планировщик (Scheduler), в production среде чаще всего используется Celery
  • Воркер, выполняющий работу. В production среде также чаще всего встречается конфигурация с Celery.

В качестве базы данных рекомендуется использовать PostgreSQL или MySQL. В этом посте речь пойдёт про установку и настройку Apache Airflow руками, я не буду использовать готовые образы Docker, чтобы наглядно показать как всё запускается изнутри.

Погнали! Создаём новое виртуальное окружение Python, и ставим в него Apache Airflow:

$ python3 -m venv .venv
$ source .venv/bin/activate
$ pip install apache-airflow

У Airflow много зависимостей в отличие от Luigi, поэтому на экране будет много текста. Вот, например, результат вывода pip freeze:

alembic==1.4.0
apache-airflow==1.10.9
apispec==1.3.3
argcomplete==1.11.1
attrs==19.3.0
Babel==2.8.0
cached-property==1.5.1
cattrs==0.9.0
certifi==2019.11.28
chardet==3.0.4
Click==7.0
colorama==0.4.3
colorlog==4.0.2
configparser==3.5.3
croniter==0.3.31
defusedxml==0.6.0
dill==0.3.1.1
docutils==0.16
Flask==1.1.1
Flask-Admin==1.5.4
Flask-AppBuilder==2.2.2
Flask-Babel==0.12.2
Flask-Caching==1.3.3
Flask-JWT-Extended==3.24.1
Flask-Login==0.4.1
Flask-OpenID==1.2.5
Flask-SQLAlchemy==2.4.1
flask-swagger==0.2.13
Flask-WTF==0.14.3
funcsigs==1.0.2
future==0.16.0
graphviz==0.13.2
gunicorn==19.10.0
idna==2.8
importlib-metadata==1.5.0
iso8601==0.1.12
itsdangerous==1.1.0
Jinja2==2.10.3
json-merge-patch==0.2
jsonschema==3.2.0
lazy-object-proxy==1.4.3
lockfile==0.12.2
Mako==1.1.1
Markdown==2.6.11
MarkupSafe==1.1.1
marshmallow==2.19.5
marshmallow-enum==1.5.1
marshmallow-sqlalchemy==0.22.2
numpy==1.18.1
pandas==0.25.3
pendulum==1.4.4
pkg-resources==0.0.0
prison==0.1.2
psutil==5.6.7
Pygments==2.5.2
PyJWT==1.7.1
pyrsistent==0.15.7
python-daemon==2.1.2
python-dateutil==2.8.1
python-editor==1.0.4
python3-openid==3.1.0
pytz==2019.3
pytzdata==2019.3
PyYAML==5.3
requests==2.22.0
setproctitle==1.1.10
six==1.14.0
SQLAlchemy==1.3.13
SQLAlchemy-JSONField==0.9.0
SQLAlchemy-Utils==0.36.1
tabulate==0.8.6
tenacity==4.12.0
termcolor==1.1.0
text-unidecode==1.2
thrift==0.13.0
typing==3.7.4.1
typing-extensions==3.7.4.1
tzlocal==1.5.1
unicodecsv==0.14.1
urllib3==1.25.8
Werkzeug==0.16.1
WTForms==2.2.1
zipp==2.2.0
zope.deprecation==4.4.0

После установки пакета apache-airflow, в виртуальном окружении будет доступна команда airflow. Запустите её без параметров, чтобы увидеть список доступных команд.

Apache Airflow свои настройки хранит в файле airflow.cfg, который по умолчанию будет создан в домашней директории юзера по пути ~/airflow/airflow.cfg. Путь можно изменить, присвоив переменной окружения новое значение:

$ export AIRFLOW_HOME=~/airflow/

Далее выполняем инициализацию для базы данных.

$ airflow initdb

Эта команда накатит все миграции, по умолчанию в качестве базы данных Airflow использует SQLite. Для демонстрационных возможностей это нормально, но в реальном бою лучше всё же переключиться на MySQL или PostgreSQL. Давайте делать всё по-взрослому. Я буду использовать Postgres, поэтому если он у вас до сих пор не стоит, то самое время установить PostgreSQL.

Создаю базу данных и пользователя к ней для Airflow:

postgres=# create database airflow_metadata;
CREATE DATABASE
postgres=# CREATE USER airflow WITH password 'airflow';
CREATE ROLE
postgres=# grant all privileges on database airflow_metadata to airflow;
GRANT

А теперь открываем airflow.cfg и правим значение параметра sql_alchemy_conn на postgresql+psycopg2://airflow:airflow@localhost/airflow_metadata и load_examples = False. Последний параметр отвечает за загрузку примеров с бесполезными DAGами, они нам не нужны.

В качестве python-драйвера для PostgreSQL я использую psycopg2, поэтому её необходимо поставить в окружение:

$ pip install psycopg2==2.8.4

Инициализируем новую базу данных:

$ airflow initdb

Airflow Executors

Хочу немножко отвлечься от запуска Airflow и рассказать про очень важную концепцию — Executors. Как понятно из названия, Executors отвечают за исполнение задач. В Airflow есть несколько видов исполнителей:

  • SequentialExecutor
  • LocalExecutor
  • CeleryExecutor
  • DaskExecutor
  • KubernetesExecutor

В боевой среде чаще всего встречается CeleryExecutor, который, как можно догадаться, использует Celery. Но обо всём по порядку.

SequentialExecutor

Этот исполнитель установлен в качестве значения по умолчанию в airflow.cfg у параметра executor и представляет из себя простой вид воркера, который не умеет запускать параллельные задачи. Как можно догадаться, в конкретный момент времени выполняться может только одна единственная задача. Этот вид исполнителя используют в ознакомительных целях, для продуктивной среды он категорически не подходит.

LocalExecutor

Этот вид исполнителя даёт максимальные ощущения продуктивной среды в тестовом окружении (или окружении разработки). Он умеет выполнять задачи параллельно (например, исполнять несколько DAGов одновременно) путём порождения дочерних процессов, но всё же не совсем предназначен для продакшена ввиду ряда проблем:

  1. Ограничение при масштабировании (возможно эта проблема не будет актуальна для вас), исполнитель этого типа ограничен ресурсами машины на котором он запущен
  2. Отсутствие отказоустойчивости. Если машина с этим типом воркера падает, то задачи перестают исполнять до момента её возвращения в строй.

При небольшом количестве задач всё же можно использовать LocalExecutor, т.к. это проще, быстрее и не требует настройки дополнительных сервисов.

CeleryExecutor

Наиболее популярный вид исполнения задач. Под капотом использует всю магию таск-менеджера Celery, а соответственно тянет за собой все зависимости этого инструмента. Чтобы использовать CeleryExecutor необходимо дополнительно настроить брокер сообщений. Чаще всего используют либо Redis либо RabbitMQ. Преимущества этого вида в том, что его легко масштабировать — поднял новую машину с воркером, и он готов выполнять требуемую работу, а также в отказоустойчивости. В случае падения одного из воркеров его работа будет передана любому из живых.

DaskExecutor

Очень похож на CeleryExecutor, но только вместо Celery использует инструмент Dask, в частности dask-distributed.

KubernetesExecutor

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

Так к чему я начал разговор про Executors. В стандартной конфигурации Airflow предлагает нам использовать SequentialExecutor, но мы ведь стараемся подражать продуктивной среде, поэтому будем использовать LocalExecutor. В airflow.cfg поменяйте значение параметра executor на LocalExecutor.

Запускаем веб-приложение на 8080 порту:

$ airflow webserver -p 8080

Если всё настроено правильно, то переход по адресу localhost:8080 должен показать страницу как на скриншоте:

Поздравляю! Мы настроили и запустили Apache Airflow. На странице можно заметить сообщение:

The scheduler does not appear to be running. The DAGs list may not update, and new tasks will not be scheduled.

Сообщение указывает на то, что не запущен планировщик Airflow (scheduler). Он отвечает за DAG discovery (обнаружение новых DAG), а также за планирование их запуска. Запустить планировщик можно командой:

$ airflow scheduler

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

Итак, база настроена, веб-приложение и планировщик запущены. Нам остаётся только написать наш первый data pipeline и почувствовать себя в шкуре крутого дата инженера.

Строим data pipeline на Apache Airflow

В файле настроек airflow.cfg есть параметр dags_folder, он указывает на путь, где лежат файлы с DAGами. Это путь $AIRFLOW_HOME/dags. Именно туда мы положим наш код с задачами.

Какие задачи будет выполнять пайплайн? Я решил для демонстрации взять пример с датасетом Titanic о котором писал в статье про pandas. Суть в том, что сначала необходимо будет скачать датасет, следующим шагом будет этап создания сводной таблицы: сгруппируем пассажиров по полу и пассажирскому классу, чтобы узнать количество людей в каждом классе. Результатом будет новый csv-файл со сводной таблицей.

Вот так выглядит DAG:

А вот код всего DAGа, включая 2 оператора:

import os
import datetime as dt

import requests
import pandas as pd
from airflow.models import DAG
from airflow.operators.python_operator import PythonOperator

args = {
    'owner': 'airflow',
    'start_date': dt.datetime(2020, 2, 11),
    'retries': 1,
    'retry_delay': dt.timedelta(minutes=1),
    'depends_on_past': False,
}

FILENAME = os.path.join(os.path.expanduser('~'), 'titanic.csv')

def download_titanic_dataset():
    url = 'https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/titanic.csv'
    response = requests.get(url, stream=True)
    response.raise_for_status()
    with open(FILENAME, 'w', encoding='utf-8') as f:
        for chunk in response.iter_lines():
            f.write('{}\\n'.format(chunk.decode('utf-8')))

def pivot_dataset():
    titanic_df = pd.read_csv(FILENAME)
    pvt = titanic_df.pivot_table(
        index=['Sex'], columns=['Pclass'], values='Name', aggfunc='count'
    )
    df = pvt.reset_index()
    df.to_csv(os.path.join(os.path.expanduser('~'), 'titanic_pivot.csv'))

with DAG(dag_id='titanic_pivot', default_args=args, schedule_interval=None) as dag:
    create_titanic_dataset = PythonOperator(
        task_id='download_titanic_dataset',
        python_callable=download_titanic_dataset,
        dag=dag
    )
    pivot_titanic_dataset = PythonOperator(
        task_id='pivot_dataset',
        python_callable=pivot_dataset,
        dag=dag
    )
    create_titanic_dataset >> pivot_titanic_dataset

В DAGе у нас используются 2 PythonOperator. Обратите внимание, что они принимают функцию, которую необходимы выполнить. В первом случае это download_titanic_dataset, которая скачивает датасет из сети, во втором случае это pivot_dataset, которая сохраняет сводную таблицу из исходного файла (сохраненного предыдущей функцией).

Стоит обратить внимание на объект DAG и то как описаны зависимости между двумя операторами. В Airflow допустимы конструкции >> и <<, а также методы .set_upstream и .set_downstream. Т.е. код:

create_titanic_dataset >> pivot_titanic_dataset

Можно заменить на:

pivot_titanic_dataset.set_upstream(create_titanic_dataset)
# или
pivot_titanic_dataset << create_titanic_dataset

Это означает, что выполнение оператора pivot_titanic_dataset зависит от выполнения оператора create_titanic_dataset.

На уровне объекта DAG задаются настройки, например:

  • Время начала выполнения пайплайна (start_date)
  • Периодичность запуска (schedule_interval)
  • Информация о владельце DAG (owner)
  • Количество повторений в случае неудач (retries)
  • Пауза между повторами (retry_delay)

Параметров в разы больше. Более подробно как всегда можно прочитать в доках.

Итак, сохраняем в файл код и помещаем его по пути $AIRFLOW_HOME/dags. Для того, чтобы DAGи отображались в интерфейсе Airflow необходимо запустить планировщик:

$ airflow scheduler

Если всё сделано верно, то в списке появится наш DAG:

Его можно активировать, переключив с Off на On и попробовать запустить (Trigger Dag).

Заключение

Эта статья лишь небольшое введение в Apache Airflow. Я не раскрыл и 20% того, что умеет инструмент, но и такой задачи себе не ставил. Лучшим способом изучить Apache Airflow является работа с ним. Пробуйте, экспериментируйте, чтобы понять подходит он под ваши задачи или нет.

Ссылка на репозиторий с примерами: https://github.com/adilkhash/apache-airflow-intro

💌 Присоединяйтесь к рассылке

Понравился контент? Пожалуйста, подпишись на рассылку.

Что такое AirFlow и как она работает?

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

Виды профессионального ухода за полостью рта

Каждая современная стоматологическая клиника предлагает клиентам несколько способов профессиональной чистки зубов. Наиболее популярные среди них:

  • Ультразвуковая;
  • Пескоструйная обработка

Как работает система AirFlow

На смену жёсткой механической чистке пришли более щадящие технологии. AirFlow — в буквальном смысле «воздушный поток» — обрабатывает поверхность зуба, не травмируя эмаль и дёсны. Методика довольно проста: аппарат под давлением подаёт лечебную смесь на поверхность зубов. В состав такой смеси входит вода и абразивный компонент. Её частички очень мелкие и гладкие, поэтому не способны повредить эмаль. При этом высокое давление подачи раствора обеспечивает полное удаление налёта.

Преимущества методики AirFlow

  • Приятная, безболезненная, освежающая процедура. Эффект полной чистоты и идеальной гладкости зубов сохраняется на длительный срок.
  • Аппарат позволяет контролировать силу воздействия раствора на зубы.
  • Избавление от биоплёнки и патогенных бактерий.
  • Безопаснаяполировкаэмали.
  • Высокая скорость процесса обработки зубов.
  • Метод эффективен для всех пациентов.

Время обработки ротовой полости

Вся процедура занимает не более получаса. Для продления эффекта гладкости и белизны зубов, их покрывают специальным раствором — стоматологическим лаком.

Какого эффекта позволяет достичь AirFlow

Процедура убирает налёт, оставляя тем самым натуральный оттенок зубов.  Идеальный белый цвет можно получить только после процедуры отбеливания. Оно проводится лазерным или химическим способом, что позволяет отбелить эмаль на 5-10 тонов. При этом отбеливание  эффективно  только после прохождения профессиональной чистки.

Рекомендации для сохранения полученного результата

В течение трёх часов после процедуры восстанавливается естественная защитная плёнка, нарушенная при чистке. На протяжении этого периода желательно не употреблять красящих продуктов и напитков (так называемая «белая диета»): чай, кофе, яркие фрукты.

Противопоказания для проведения AirFlow

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

Чистка зубов Air Flow. Профессиональная читска аппаратом air flow в Москве и области

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

AirFlow Pro

  • профессиональная гигиена полости рта;

  • выполняется абсолютно безболезненным методом;

  • рекомендована не реже одного раза в шесть месяцев;

  • даёт заметный эффект после первой процедуры.



AirFlow Pro — видимый результат после первой процедуры

Обзор процедуры AirFlow Pro

Профессиональная гигиена AirFlow Pro выполняется пескоструйным аппаратом, из которого под высоким давлением на поражённую налётом поверхность выдаётся смесь, в которую входит вода, сжатый воздух и сода. Абразивными веществами выступают и кристаллы кальция. 

Услуга AirFlow Pro относится к высокоэффективным, поскольку очищает эмаль и поддёсенный налёт, биоплёнку с бактериями уже после первой процедуры. Профессиональная чистка зубов AirFlow Pro выполняется безболезненно, не требует местной анестезии. Во время процедуры удаляются скопления грануляций, исчезает неприятный запах изо рта.

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


AirFlow Pro позволяет до 87% предотвратить многие заболевания, а также укрепляет общий иммунитете, поскольку ротовая полость является основным местом контакта организма с внешним миром. Здоровые зубы — здоровый организм.

Показания к профессиональной чистке AirFlow Pro

Национальный совет по медицине и Всемирная организация здравоохранения рекомендуют проводить процедуру в следующих случаях:
  • если вы страдаете от заболеваний десен, данная процедура поможет тщательно очистить отложения в самых труднодоступных местах ротовой полости и станет отличной профилактической мерой против развития пародонтоза;
  • если вы хотите продлить срок службы пломб, имплантатов, виниров или протезов и для сохранить их эстетичный вид, также комплексная чистка Air Flow показана  перед установкой данных видов стоматологических конструкций;
  • если вы хотите защитить свои зубы от кариеса;
  • если вы планируете снять или установить брекеты;
  • если у вас имеется скученность зубов, данная методика поможет прочистить труднодоступные промежутки между зубами;
  • если вы регулярно потребляете чай, кофе и сигареты.

Комплексный подход

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

AirFlow Pro не просто отбелит эмаль и удалит эффективно весь налёт. Очищение значительно снизит риск развития различных стоматологических заболеваний.


Что такое чистка зубов Air-flow

Air flow — в переводе обозначает «поток воздуха», технология, созданная в Швейцарии. Применяется для щадящего удаления налета и биологической пленки с поверхности зубов, а также полировки зубов после процедуры скейлинга. Данный метод возвращает природный блеск и белизну зубов.

Как работает метод Air flow?

В камере прибора Air flow, где находятся гранулы порошка определенного размера, создается избыточное давление. В результате формируется вылетающая из сопла смесь из воды, воздуха и порошка. Под воздействием данной водо-воздушной смеси и порошка на зуб происходит его поверхностное очищение. Отработанные ингредиенты вместе с налетом улавливаются и отводятся стоматологическим пылесосом.

Какой порошок используется в Air flow?

Есть несколько разновидностей порошка, используемого при технологии Air flow.

  1. Бикарбонат натрия (сода пищевая) с определенным размером частиц и ароматизатором. Классический вариант, используемый в технологии Air flow уже давно. Обладает хорошей очищающей способностью, но у некоторых пациентов может вызывать временное раздражение десны.
  2. Карбонат кальция с частицами правильной формы. Хорошо и бережно очищает зубы, отлично полирует и не раздражает слизистую полости рта.
  3. Глицин, аминокислота, хорошо растворимая в воде. Порошок имеет приятный вкус, малоабразивный, очень нежно полирует поверхность зубов. Air flow с глицином можно использовать чаще, чем 2 раза в год.

В каких случаях используется Air flow?

«Отбеливание» зубов Air flow применяется для:

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

Air flow заменяет традиционную чистку зубов и действительно отбеливает зубы?

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

Какие есть противопоказания к Air flow?

  • У пациентов с хроническим бронхитом и бронхиальной астмой данную методику лучше не применять, так как существует вероятность развития приступа затрудненного дыхания.
  • У пациентов, находящихся на бессолевой диете, не рекомендуется использование бикарбоната натрия в качестве очищающего порошка.
  • Непереносимость ароматической добавки (лимон), входящей в состав бикарбоната натрия.
  • При пародонтите предпочтительнее использовать другие методы удаления зубных отложений и налета, например, аппаратом Вектор, Durr.

Рекомендации после проведения процедуры очистки зубов

  • В течение 2-3 часов не употребляйте продукты, вызывающие окрашивание зубов.
  • Нельзя пить чай или кофе, курить, так как при чистке с поверхности зуба убирается пелликула — покрывающая зуб органическая пленка. Новая образуется в течение 2-3 часов.

Повторный визит врач назначает индивидуально раз в квартал или через полгода. Вы можете узнать подробнее, как проводится процедура комплексной чистки зубов с применением метода Air flow в стоматологической клинике «Стомалайн».

Полное руководство по Apache Airflow

Что такое Apache Airflow?

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

С помощью Airflow пользователи могут создавать рабочие процессы как направленных ациклических графов (DAG) задач.Богатый пользовательский интерфейс Airflow позволяет легко визуализировать конвейеры, работающие в производственной среде, отслеживать прогресс и при необходимости устранять неполадки. Он подключается к нескольким источникам данных и может отправлять оповещения по электронной почте или в Slack, когда задача завершается или не выполняется. Airflow является распределенным, масштабируемым и гибким, что делает его хорошо подходящим для управления сложной бизнес-логикой.

Как используется воздушный поток?

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

В Airflow эти рабочие процессы представлены как направленные ациклические графы (DAG). Давайте рассмотрим пример приготовления пиццы, чтобы понять, что такое рабочий процесс / DAG.

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

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

Эффективные, рентабельные и хорошо организованные конвейеры данных помогают специалистам по обработке данных разрабатывать лучше настроенные и более точные модели машинного обучения, поскольку эти модели были обучены с использованием полных наборов данных, а не только небольших выборок. Airflow изначально интегрирован для работы с системами больших данных, такими как Hive, Presto и Spark, что делает его идеальной средой для оркестровки заданий, выполняемых на любом из этих механизмов.Организации все чаще используют Airflow для организации своих заданий ETL / ELT.

Компоненты архитектуры Apache Airflow

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

  • Динамический: Конвейеры воздушного потока конфигурируются как код (Python), что позволяет создавать динамические конвейеры. Это позволяет пользователям писать код, который динамически создает экземпляры конвейеров.
  • Extensible: Легко определяйте собственных операторов и исполнителей и расширяйте библиотеку, чтобы она соответствовала уровню абстракции, подходящему для вашей среды.
  • Elegant: Трубопроводы воздушного потока компактны и понятны. Параметризация ваших скриптов встроена в ядро ​​Airflow с использованием механизма шаблонов Jinja.
  • Масштабируемость: Airflow имеет модульную архитектуру и использует очередь сообщений для связи и управления произвольным числом рабочих.

Подробнее о каждом из этих компонентов читайте здесь.

Как настроить Apache Airflow

Есть несколько способов настроить и запустить Apache Airflow на своем ноутбуке. В этом блоге мы объясняем три различных способа его настройки. В каждом подходе можно использовать один из трех типов исполнителей. Мы выбираем одного исполнителя для каждого подхода для объяснения:

  • Базовая установка с использованием virtualenv и pip . В этой настройке мы запускаем SequentialExecutor, который идеально подходит для тестирования DAG на локальной машине разработки.
  • Установка с использованием Docker , в котором мы запускаем CeleryExecutor, используя Redis в качестве очереди.
  • Настройка Kubernetes с использованием Helm для запуска KubernetesExecutor.

Преимущества использования Apache Airflow для ETL / ELT

Вот несколько причин, по которым Airflow превосходит другие платформы:

  • Сообщество: Airflow был запущен Airbnb еще в 2015 году. Сообщество Airflow с тех пор растет. У нас более 1000 участников, вносящих свой вклад в Airflow, и их число растет быстрыми темпами.
  • Расширяемость и функциональность: Apache Airflow обладает высокой расширяемостью, что позволяет адаптировать его к любым пользовательским сценариям использования. Возможность добавлять пользовательские хуки / операторы и другие плагины помогает пользователям легко реализовывать пользовательские сценарии использования и не полагаться полностью на операторов Airflow. С момента создания в Airflow уже были добавлены несколько функций. Airflow, созданный многочисленными инженерами по обработке данных, представляет собой законченное решение, которое решает множество вариантов использования инженерии данных. Хотя Airflow не идеален, сообщество работает над множеством важных функций, которые имеют решающее значение для повышения производительности и стабильности платформы Airflow.
  • Создание динамического конвейера: Конвейеры воздушного потока представляют собой конфигурацию как код (Python), что позволяет создавать динамические конвейеры. Это позволяет писать код, который динамически создает экземпляры конвейера. Обработка данных, которую мы выполняем, не является линейной и статичной.

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

Apache Airflow на Qubole

С помощью Airflow на Qubole вы можете создавать, планировать и контролировать сложные конвейеры данных. Устранение сложности развертывания и управления кластерами Airflow с запуском и остановкой одним щелчком мыши. Кроме того, бесшовная интеграция с Github и AWS S3 обеспечивает максимально бесперебойную работу конвейера данных. Кроме того, благодаря функциям Qubole, таким как Airflow QuboleOperator, клиенты могут отправлять команды в Qubole, что дает им большую программную гибкость.

В Qubole мы представили следующие функции, которые делают использование Qubole Airflow еще проще:

DAG Explorer

Для непрерывной разработки, интеграции и развертывания DAG-файлов Airflow компания Qubole представила инструменты для загрузки файлов Airflow Python DAG в Amazon S3. , редактируйте их на месте и периодически синхронизируйте их с кластерами Airflow (в фоновом режиме). Вы также можете загрузить другие соответствующие файлы Airflow, такие как файлы процессов и журналов, со страницы кластера Airflow.Это помогает быстро и многократно разрабатывать сложные рабочие процессы и синхронизировать файлы. Нажмите сюда, для получения дополнительной информации.

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

Виртуальная среда Anaconda

Теперь вы можете запустить Airflow в виртуальной среде Anaconda. Пользователи могут выбрать версию Python при создании кластера Airflow.Выбор Python 3.5 запускает настройку Airflow в среде Anaconda вместе с поддержкой управления пакетами (возможность установки / удаления пакетов в кластере из пользовательского интерфейса Qubole) для кластера. Более подробную информацию можно найти здесь.

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

Apache Airflow как услуга в QDS

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

Автоматизированное управление жизненным циклом кластера : Кластеры воздушного потока на QDS используют инфраструктуру автоматического управления жизненным циклом кластера Qubole, которая в настоящее время находится в производстве и используется в кластерах Hadoop, Spark, Presto и HBase.В результате вы можете воспользоваться преимуществами подготовки кластера одним щелчком мыши, указать настройки для Airflow, настроить кластеры для безопасного запуска в ваших VPC и подсетях и выбрать один из 40+ типов инстансов AWS. Интеграция между QDS и Airflow : В этом блоге мы представили Qubole Operator, который позволяет интегрировать Airflow с вашими конвейерами данных в QDS. Используя этот оператор, вы сможете использовать Airflow для создания сложных конвейеров данных и управления ими, одновременно отправляя задания непосредственно в QDS. Мониторинг : вы можете отслеживать состояние своих рабочих процессов через веб-сервер Airflow, который доступен после запуска кластеров Airflow. Кроме того, Qubole также обеспечивает мониторинг с помощью панелей Ganglia и Celery. Надежность : Мы расширили кодовую базу, чтобы сделать ее более надежной. Таким образом, в маловероятном случае, когда Airflow перестает отвечать на запросы, перезапуск кластера Airflow автоматически вернет задания Qubole Operator в исходное состояние. Улучшение взаимодействия с пользователем : Мы внедрили решение для кэширования ресурсов, которое значительно сокращает время загрузки веб-сервера Airflow.Кроме того, мы добавили возможность легко переходить из веб-интерфейса Airflow в QDS. Эти улучшения важны, потому что мониторинг конвейеров данных является важной частью обработки рабочих нагрузок больших данных. Безопасность и доступность : Все действия в кластерах Airflow проходят через существующие роли, пользователей и группы безопасности, которые в настоящее время работают в QDS. Это избавляет от необходимости внедрять другие / настраиваемые ACL или механизмы безопасности для авторизации доступа к вашим кластерам и рабочим процессам Airflow.

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

Введение в Apache Airflow | Руководства по Apache Airflow

Если вы вообще занимаетесь разработкой данных, вы, вероятно, слышали об Apache Airflow. С момента своего создания в качестве проекта с открытым исходным кодом на AirBnb в 2015 году Airflow быстро стал золотым стандартом для инженерии данных, получая общественный вклад от людей из крупных организаций, таких как Bloomberg, Lyft, Robinhood и многих других.

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

История

В 2015 году у Airbnb возникла проблема. Они росли как сумасшедшие, и у них был огромный объем данных, который только увеличивался. Чтобы достичь цели стать организацией, полностью управляемой данными, им пришлось увеличить свой штат инженеров по обработке данных, специалистов по обработке данных и аналитиков — всем им приходилось регулярно автоматизировать процессы, создавая запланированные пакетные задания.Чтобы удовлетворить потребность в надежном инструменте планирования, Максим Бошемин создал Airflow с открытым исходным кодом с идеей, что он позволит им быстро создавать, выполнять итерацию и контролировать свои конвейеры пакетных данных.

Со времени первого коммита Максима в то время Airflow прошел долгий путь. Проект присоединился к официальному инкубатору Apache Foundation в апреле 2016 года, где он жил и рос, пока не завершился 8 января 2019 года как проект верхнего уровня. Почти два года спустя, по состоянию на декабрь 2020 года, Airflow насчитывает более 1400 участников, 11230 человек. совершает и 19800 звезд на Github.17 декабря 2020 года был выпущен Airflow 2.0, принесший с собой важные обновления и новые мощные функции. Airflow используется тысячами групп инженеров данных по всему миру и продолжает применяться по мере того, как сообщество становится сильнее.

Обзор

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

Airflow имеет несколько ключевых преимуществ, а именно:

  • Это динамично: Все, что вы можете делать в Python, вы можете делать в Airflow.
  • Расширяемый: Airflow имеет готовые плагины для взаимодействия с наиболее распространенными внешними системами. При необходимости вы также можете создавать свои собственные плагины.
  • Масштабируемость: Команды используют Airflow для выполнения тысяч различных задач в день.

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

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

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

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

Если вас интересуют более конкретные примеры, вот несколько интересных вещей, которые мы видели, как люди делают с Airflow:

  • Объединяйте ежедневные обновления отдела продаж от Salesforce для отправки ежедневного отчета руководству компании.
  • Используйте Airflow для организации и запуска заданий машинного обучения, выполняемых на внешних кластерах Spark.
  • Ежечасно загружать данные аналитики веб-сайтов / приложений в хранилище данных.

Если вы хотите погрузиться глубже, мы подробнее обсудим варианты использования Airflow в нашем эпизоде ​​подкаста!

Основные концепции

ДАГ

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

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

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

Чтобы получить более подробный обзор групп DAG, ознакомьтесь с нашим руководством «Введение в группы DAG».

Задачи

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

Операторы

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

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

Операторы определяются индивидуально, но они могут передавать информацию другим операторам с помощью XComs.

На высоком уровне объединенная система DAG, операторов и задач выглядит так:

Крючки

Хуки

— это способ взаимодействия Airflow со сторонними системами.Они позволяют подключаться к внешним API и базам данных, таким как Hive, S3, GCS, MySQL, Postgres и т. Д. Они действуют как строительные блоки для операторов. Защищенная информация, такая как учетные данные для аутентификации, хранится вне ловушек — эта информация хранится через соединения Airflow в зашифрованной базе данных метаданных, которая находится в вашем экземпляре Airflow.

Провайдеры

Поставщики

— это поддерживаемые сообществом пакеты, которые включают в себя все основные операторы , и хуки для данной услуги (например.грамм. Amazon, Google, Salesforce и др.). В составе Airflow 2.0 эти пакеты поставляются с несколькими отдельными, но связанными пакетами, и их можно напрямую установить в среду Airflow.

Для просмотра и поиска всех доступных провайдеров и модулей посетите Astronomer Registry, центр обнаружения и распространения интеграций Apache Airflow, созданный для агрегирования и управления лучшими частями экосистемы.

Плагины

Плагины

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

Подключения

Connections — это место, где Airflow хранит информацию, которая позволяет вам подключаться к внешним системам, например учетные данные для аутентификации или токены API. Это управляется непосредственно из пользовательского интерфейса, а фактическая информация зашифровывается и сохраняется в виде метаданных в базовой базе данных Postgres или MySQL Airflow.

Учись, делая

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

Как всегда, не стесняйтесь обращаться к нам, если у вас есть какие-либо вопросы или если мы можем чем-то помочь вам в вашем путешествии по Airflow!

Основы воздушного потока — Учебная документация по воздушному потоку

Что такое воздушный поток?

логотип воздушного потока

Airflow — это механизм рабочего процесса, что означает:

  • Управление планированием и запуском заданий и конвейеров данных
  • Обеспечивает правильный порядок заданий на основе зависимостей
  • Управление распределением ограниченных ресурсов
  • Предоставляет механизмы для отслеживания состояния заданий и восстановления после сбоя.

Он очень универсален и может использоваться во многих областях:

Основные концепции воздушного потока

  • Задача : определенная единица работы (в Airflow они называются операторами)
  • Экземпляр задачи : отдельный запуск одной задачи.Экземпляры задач также имеют индикативное состояние, которое может быть «выполняется», «успешно», «не удалось», «пропущено», «готов к повторной попытке» и т. Д.
  • DAG : Направленный ациклический граф, набор задач с явным порядком выполнения, началом и концом
  • DAG run : индивидуальное выполнение / запуск DAG

Разоблачение DAG

Вершины и ребра (стрелки, соединяющие узлы) имеют порядок и направление, связанные с ними

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

Узел A может быть кодом для извлечения данных из API, узел B может быть кодом для анонимизации данных. Узел B может быть кодом для проверки отсутствия повторяющихся записей и т. Д.

Эти «конвейеры» являются ацикличными, поскольку им требуется точка завершения.

Зависимости

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

Идемпотентность

Это одна из наиболее важных характеристик хорошей архитектуры ETL.

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

Воспроизводимость особенно важна в средах с большим объемом данных, поскольку это гарантирует, что одни и те же входные данные всегда будут возвращать одни и те же выходные данные.

Компоненты воздушного потока

Apache Airflow состоит из 4 основных компонентов:

Веб-сервер

Графический интерфейс.Это приложение Flask, в котором вы можете отслеживать статус своих заданий и читать журналы из удаленного файлового хранилища (например, Azure Blobstorage).

Планировщик

Этот компонент отвечает за планирование заданий. Это многопоточный процесс Python, который использует объект DAGb, чтобы решить, какие задачи нужно запускать, когда и где.

Состояние задачи извлекается и обновляется из базы данных соответственно. Затем веб-сервер использует эти сохраненные состояния для отображения информации о задании.

Исполнитель

Механизм, выполняющий задачи.

Рабочий процесс в виде кода

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

Таким образом, ваши рабочие процессы становятся более понятными и удобными в обслуживании (атомарные задачи).

Не только ваш код динамичен, но и ваша инфраструктура.

Определение задач

Задачи определяются на основе абстракции Операторов (см. Здесь документацию Airflow), которые представляют собой одну идемпотентную задачу .

Лучшая практика — иметь атомарные операторы (т.е. могут работать сами по себе и им не нужно делить ресурсы между собой).

Вы можете выбрать среди;

  • BashOperator
  • Python Оператор
  • Электронная почта Оператор
  • SimpleHttpOperator
  • MySqlOperator (и другие БД)

Примеры:

 t1 = BashOperator (task_id = 'print_date',
    bash_command = 'дата,
    даг = даг)
 
 def print_context (ds, ** kwargs):
    pprint (kwargs)
    печать (ds)
    return 'Все, что вы вернете, будет напечатано в журналах'


run_this = PythonOperator (
    task_id = 'print_the_context',
    provide_context = True,
    python_callable = print_context,
    даг = даг,
)
 

Сравнение Луиджи и Airflow

Луиджи

  • Создано в Spotify (названо в честь сантехника)
  • Открытый исходный код в конце 2012 г.
  • GNU make для данных

Воздушный поток

  • Команда данных Airbnb
  • Открытый буровой раствор 2015
  • Инкубатор Apache, середина 2016 г.
  • Трубопроводы ЭТЛ

Сходства

  • Python проекты с открытым исходным кодом для конвейеров данных
  • Интеграция с рядом источников (базы данных, файловые системы)
  • Ошибка отслеживания, повторные попытки, успех
  • Способность определять зависимости и выполнение

Отличия

  • Поддержка планировщика: Airflow имеет встроенную поддержку с использованием планировщиков
  • Масштабируемость: в прошлом у воздушного потока были проблемы со стабильностью
  • Веб-интерфейсы

| Воздушный поток | Луиджи | | ———————————————— | —————————————————————————— | | Задача определяется dag_id определяется именем пользователя | Задача определяется именем задачи и параметрами | | Повторные попытки задачи на основе определений | Решить, выполняется ли задача через ввод / вывод | | Код задания работнику | Рабочие, запущенные файлом Python, в котором определены задачи | | Централизованный планировщик (Celery раскручивает рабочих) | Централизованный планировщик, отвечающий за отправку задач дедупликации (на основе Tornado) |

Введение в воздушный поток | Программа инженерного образования (EngEd)

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

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

Что такое воздушный поток?

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

Типичный рабочий процесс выглядит так:

  
  • Извлечь данные из источника (база данных, API и т. д.).
  • Обработайте данные, отправив их куда-нибудь.
  • Следите за процессом
  • Хранить данные в хранилище данных.
  • Преобразуйте данные и сделайте их пригодными для аналитики.
  • Проанализируйте данные и отправьте отчет по электронной почте.

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

Основные концепции

DAG

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

Операторы

Согласно документации, оператор описывает отдельную задачу в рабочем процессе и обычно (но не всегда) является атомарным, что означает, что он может работать самостоятельно и не должен делиться ресурсами с другими операторами.Другими словами, оператор определяет, что делает задача в DAG. Некоторые операторы, которые предоставляет Airflow:

BashOperator — этот оператор можно использовать для выполнения команд bash в Python.

PythonOperator — этот оператор может вызывать функции, написанные на Python.

EmailOperator — этот оператор может использоваться для отправки электронных писем одному или нескольким получателям.

SimpleHttpOperator — этот оператор используется для отправки HTTP-запросов. Перейдите по этой ссылке, чтобы узнать больше о HTTP-запросах.

Установка Airflow

Поскольку Airflow полностью написан на Python, мы можем использовать pip (менеджер пакетов для Python). Вы можете установить Airflow в своей локальной системе, выполнив на терминале следующую команду:

  pip3 установить apache-airflow
  

Файлы конфигурации воздушного потока и информация о базе данных будут храниться в переменной среды с именем AIRFLOW_HOME. Согласно Википедии, переменная среды или переменная PATH в Unix-подобных операционных системах указывает набор каталогов, в которых расположены исполняемые программы.Как правило, каждый выполняющийся процесс или пользовательский сеанс имеет свою собственную настройку PATH. По умолчанию Airflow создает каталог ~ / airflow / , но вы можете изменить путь по умолчанию на каталог по вашему выбору. Чтобы изменить исходный путь воздушного потока, введите на терминале следующую команду:

  export AIRFLOW_HOME = <путь к выбранному вами каталогу>
  

Пример:

  экспорт AIRFLOW_HOME = ~ / adith / airflow
  

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

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

Для инициализации базы данных введите в терминале следующую команду:

Как упоминалось ранее, Airflow предоставляет эстетичный веб-интерфейс, который позволяет нам просматривать и контролировать группы DAG.Чтобы инициализировать веб-сервер и запустить веб-интерфейс, введите в терминале следующую команду:

Это запускает сервер на вашем локальном хосте. По умолчанию Airflow использует порт 8080. Порт — это конечная точка, которая позволяет внешним устройствам связываться с компьютером. Чтобы запустить пользовательский интерфейс на другом порту, выполните следующую команду:

  веб-сервер воздушного потока -p 8123
  

Это запускает веб-интерфейс через порт 8123. Чтобы получить к нему доступ, перейдите в веб-браузер по вашему выбору и введите: http: // localhost: 8123

Поздравляем! Вы успешно установили и запустили Apache Airflow в своей локальной системе.

Заключение и дополнительная информация

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

  1. Хранилище данных: для очистки, организации и хранения данных в хранилище данных.
  2. Машинное обучение: для автоматизации и мониторинга различных рабочих процессов машинного обучения.
  3. Отчеты по электронной почте: для автоматизации процесса создания отчетов и их отправки по электронной почте и т. Д.

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

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


Материалы экспертной оценки Сайхарши Баласубраманиам


Об авторе
Адит Бхарадвадж

Адит Бхарадвадж — старший специалист в Национальном инженерном институте (NIE) и стажер-программист в Cisco — Индия. Адит проявляет большой интерес к решению сложных проблем и является энтузиастом науки о данных и машинного обучения. Когда он не занимается программированием, он любит рисовать, заниматься спортом и смотреть отличные телешоу, фильмы или аниме.

GitHub — apache / воздушный поток: Apache Airflow

Apache Airflow (или просто Airflow) — это платформа для программного создания, планирования и мониторинга рабочих процессов.

Когда рабочие процессы определены как код, они становятся более удобными для сопровождения, версионирования, тестирования и совместной работы.

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

Содержание

Проектный фокус

Airflow лучше всего работает с рабочими процессами, которые в основном статичны и медленно меняются. Когда структура DAG одинакова от одного запуска к другому, это проясняет единицу работы и непрерывность. Другие подобные проекты включают Луиджи, Узи и Азкабан.

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

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

Принципы

  • Динамический : конвейеры воздушного потока имеют конфигурацию кода (Python), что позволяет создавать динамические конвейеры. Это позволяет писать код, который динамически создает экземпляры конвейеров.
  • Extensible : легко определяйте собственных операторов, исполнителей и расширяйте библиотеку, чтобы она соответствовала уровню абстракции, подходящему для вашей среды.
  • Elegant : Трубопроводы воздушного потока скудные и четкие. Параметризация ваших скриптов встроена в ядро ​​Airflow с использованием мощного механизма шаблонов Jinja .
  • Scalable : Airflow имеет модульную архитектуру и использует очередь сообщений для организации произвольного количества рабочих процессов.

Требования

Apache Airflow протестирован с:

Основная версия (dev) Стабильная версия (2.1.3)
Python 3,6, 3,7, 3,8, 3,9 3,6, 3,7, 3,8, 3,9
Кубернетес 1,18, 1,19, 1.20 1,18, 1,19, 1,20
PostgreSQL 9,6, 10, 11, 12, 13 9,6, 10, 11, 12, 13
MySQL 5,7, 8 5,7, 8
SQLite 3.15.0+ 3.15.0+
MSSQL (экспериментальный) 2017, 2019

Примечание : версии MySQL 5.x не могут или имеют ограничения с запуск нескольких планировщиков — см. документацию по планировщику.MariaDB не тестируется / не рекомендуется.

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

Начало работы

Посетите официальный сайт документации Airflow (последний стабильный выпуск ), чтобы получить помощь с установка Airflow, начало работы или прогулка через более полное руководство.

Примечание. Если вам нужна документация для основной ветки (последней разработки): ее можно найти на странице s.apache.org/airflow-docs.

Для получения дополнительной информации о предложениях по улучшению воздушного потока (AIP) посетите Вики-сайт Airflow.

Документация для зависимых проектов, таких как пакеты поставщиков, образ Docker, Helm Chart, вы найдете ее в указателе документации.

Установка из PyPI

Мы публикуем Apache Airflow как пакет apache-airflow в PyPI. Однако установка может быть сложной. потому что Airflow — это своего рода библиотека и приложение.Библиотеки обычно оставляют свои зависимости открытыми, и приложения обычно прикрепляют их, но мы не должны делать ни то, ни другое одновременно. Мы решили оставить наши зависимости максимально открыты (в setup.py ), чтобы пользователи могли устанавливать разные версии библиотек если нужно. Это означает, что pip install apache-airflow не будет работать время от времени или будет производят непригодную для использования установку Airflow.

Однако, чтобы иметь возможность повторять установку, мы сохраняем набор ограничений «заведомо работающие». файлы в сиротских ветвях constraints-main и constraints-2-0 .Мы сохраняем тех «заведомо работающих» файлы ограничений отдельно для каждой основной / дополнительной версии Python. Вы можете использовать их как файлы ограничений при установке Airflow из PyPI. Обратите внимание, что вы должны указать правильный тег / версия / ветка Airflow и версии Python в URL-адресе.

  1. Установка только Airflow:

Примечание. В настоящее время официально поддерживается только установка pip .

Хотя можно установить Airflow с помощью таких инструментов, как Поэзия или pip-tools, они не используют тот же рабочий процесс, что и pip — особенно когда дело доходит до ограничения vs.управление требованиями. Установка с помощью Poetry или pip-tools в настоящее время не поддерживается.

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

 pip install 'apache-airflow == 2.1.3' \
 --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.1.3/constraints-3.7.txt" 
  1. Установка с дополнительными принадлежностями (т.е., postgres, google)
 pip install 'apache-airflow [postgres, google] == 2.1.3' \
 --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.1.3/constraints-3.7.txt" 

Для получения информации об установке пакетов поставщика см. провайдеры.

Официальный исходный код

Apache Airflow — это проект Apache Software Foundation (ASF), и наши официальные выпуски исходного кода:

Согласно правилам ASF, выпущенных исходных пакетов должно быть достаточно, чтобы пользователь мог собрать и протестировать релиз при условии, что у них есть доступ к соответствующей платформе и инструментам.

Пакеты услуг

Есть и другие способы установки и использования Airflow. Это «удобные» методы — они не «официальные выпуски», как указано в политике выпуска ASF , но они могут использоваться пользователями которые не хотят разрабатывать программное обеспечение самостоятельно.

Это — в порядке наиболее распространенных способов установки Airflow:

  • Выпуски PyPI для установки Airflow с использованием стандартного инструмента pip
  • Docker Images для установки воздушного потока через docker tool, используйте их в Kubernetes, Helm Charts, docker-compose , docker swarm и т. Д.Вы можете узнать больше об использовании, настройке и расширении изображений в Последние документы и подробности о внутреннем устройстве см. в документе IMAGES.rst.
  • Теги в GitHub для получения источников проекта git, которые использовались для генерации официальных исходных пакетов через git

Все эти артефакты не являются официальными выпусками, но они подготовлены с использованием официально выпущенных источников. Некоторые из этих артефактов относятся к категории «разрабатываемые» или «предварительные версии», и они четко обозначены как таковые. следуя политике ASF.

Пользовательский интерфейс

  • DAG : Обзор всех DAG в вашей среде.

  • Дерево : Древовидное представление группы доступности базы данных, охватывающей время.

  • График : Визуализация зависимостей группы доступности базы данных и их текущего состояния для определенного запуска.

  • Длительность задачи : общее время, затраченное на выполнение различных задач с течением времени.

  • Диаграмма Ганта : продолжительность и перекрытие группы доступности базы данных.

  • Код : быстрый способ просмотра исходного кода группы доступности базы данных.

Семантическое управление версиями

Начиная с Airflow 2.0.0, мы поддерживаем строгий подход SemVer для всех выпущенных пакетов.

Есть несколько конкретных правил, которые мы согласовали, которые определяют детали управления версиями различных пакетов:

  • Airflow : правила SemVer применяются только к основному воздушному потоку (исключая любые изменения поставщиков).Изменение лимитов для версий зависимостей Airflow само по себе не является критическим изменением.
  • Провайдеры воздушного потока : Правила SemVer применяются только к изменениям в коде конкретного провайдера. SemVer MAJOR и MINOR версии пакетов не зависят от версии Airflow. Например, могут быть установлены поставщики google 4.1.0 и amazon 3.0.3 с потоком воздуха 2.1.2 . Если существуют ограничения взаимозависимостей между поставщиками и пакетами Airflow, они присутствуют в провайдерах как ограничения install_requires .Мы стремимся идти в обратном направлении совместимость провайдеров со всеми ранее выпущенными версиями Airflow 2, но иногда будут критические изменения, которые могут привести к некоторым или всем провайдеры, укажите минимальную версию Airflow. Изменение этой минимальной поддерживаемой версии Airflow является критическим изменением для провайдера, потому что установка нового провайдера может автоматически обновить Airflow (что может быть нежелательным побочным эффектом при обновлении провайдера).
  • Airflow Helm Chart : правила SemVer применяются только к изменениям в диаграмме.SemVer MAJOR и MINOR версии для диаграммы не зависят от версии Airflow. Мы стремимся идти в обратном направлении совместимость Helm Chart со всеми выпущенными версиями Airflow 2, но некоторые новые функции могут работают только начиная с определенных выпусков Airflow. Однако мы можем ограничить Helm График зависит от минимальной версии Airflow.
  • Клиенты Airflow API : СЕМЕЙНЫЕ версии MAJOR и MINOR следуют за MAJOR и MINOR версиями Airflow. После первого MAJOR или MINOR X.Y.0 выпуска Airflow всегда должен следовать X.Y.0 выпуск все клиенты. Затем клиенты могут выпускать свои собственные выпуски PATCH с исправлениями, независимо от выпусков Airflow PATCH.

Жизненный цикл версии

Жизненный цикл версии Apache Airflow:

Версия Текущий патч / минор Государство Первая версия Ограниченная поддержка EOL / прекращено
2 2.1.3 Поддерживается 17 декабря 2020 г. 31 декабря 2021 г. TBD
1.10 1.10.15 EOL 27 августа 2018 17 декабря 2020 г. 17 июня 2021 г.
1,9 1.9.0 EOL 3 января 2018 27 августа 2018 27 августа 2018
1,8 1.8.2 EOL 19 марта 2017 3 января 2018 3 января 2018
1,7 1.7.1.2 EOL 28 марта 2016 г. 19 марта 2017 19 марта 2017

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

Поддержка версий Python и Kubernetes

Начиная с Airflow 2.0, мы согласились с некоторыми правилами, которым мы следуем для поддержки Python и Kubernetes. Они основаны на официальном расписании выпусков Python и Kubernetes, красиво резюмированном в Руководство разработчика Python и Политика перекоса версий Kubernetes.

  1. Мы прекращаем поддержку версий Python и Kubernetes, когда они достигают EOL. Мы отказываемся от поддержки тех Версии EOL отображаются в основном сразу после даты EOL, и они эффективно удаляются, когда мы выпускаем первый новый НЕЗАВИСИМЫЙ (или ГЛАВНЫЙ, если нет новой МЛАДШЕЙ версии) воздушного потока Например, для Python 3.6 это означает, что мы прекращаем поддержку в main сразу после 23.12.2021, а первая ОСНОВНАЯ или МИНИМАЛЬНАЯ версия Airflow, выпущенная после, не будет иметь ее.

  2. По умолчанию используется «самая старая» поддерживаемая версия Python / Kubernetes.«По умолчанию» имеет смысл только с точки зрения «дымовых тестов» в CI PR, которые запускаются с использованием этой версии по умолчанию и ссылки по умолчанию изображение доступно. В настоящее время apache / airflow: последние и apache / airflow: 2.1.3 изображений оба изображения Python 3.6. Тем не менее, первый МАЛЕНЬКИЙ / БОЛЬШОЙ выпуск выпуска Airflow после 23.12.2021 г. становятся изображениями Python 3.7.

  3. Мы поддерживаем новую версию Python / Kubernetes в основном после их официального выпуска, как только мы заставить их работать в нашем конвейере CI (что может произойти не сразу из-за зависимостей, догоняющих в основном новые версии Python) мы выпускаем новые изображения / поддержку в Airflow на основе рабочей настройки CI.

Дополнительные примечания к требованиям версии Python

  • Предыдущие версии требуют как минимум Python 3.5.3 при использовании Python 3.

Участие

Хотите помочь в создании Apache Airflow? Ознакомьтесь с нашей сопутствующей документацией.

Официальные образы Docker (контейнеров) для Apache Airflow описаны в IMAGES.rst.

Кто использует Apache Airflow?

Более 400 организаций используют Apache Airflow в дикой природе.

Кто обслуживает Apache Airflow?

Airflow — это работа сообщества, но основные коммиттеры / сопровождающие несут ответственность за рассмотрение и объединение PR, а также за ведение переговоров по запросам новых функций. Если вы хотите стать сопровождающим, ознакомьтесь с Apache Airflow. требования коммиттера.

Могу ли я использовать логотип Apache Airflow в своей презентации?

Да! Обязательно соблюдайте политику в отношении товарных знаков Apache Foundation и фирменный буклет Apache Airflow.Самые свежие логотипы можно найти в этом репозитории и на веб-сайте Apache Software Foundation.

Товары Airflow

Если вы хотели бы иметь наклейки, футболку и т. Д. Apache Airflow, то обратите внимание Магазин Redbubble.

Ссылки

Спонсоры

Инфраструктура CI для Apache Airflow спонсируется:

Определение воздушного потока по Merriam-Webster

воздух · поток | \ ˈEr-ˌflō \

: поток воздуха особенно : Движение воздуха (как вокруг частей самолета в полете) относительно поверхности тела, погруженного в него.

размышлений о плюсах и минусах Apache Airflow

Карл Гутвин, директор службы разработки программного обеспечения в BioTeam

22 декабря 2020 г. | ТЕНДЕНЦИИ ТРЕНЧЕЙ — мне регулярно задают вопросы об Apache Airflow; например, когда его использовать, как извлечь из него максимальную пользу и на что обращать внимание.Эта статья дает мне возможность поделиться ответами на вопросы, которые меня чаще всего задают, а также возможность поделиться своим мнением о том, почему я считаю, что это один из самых важных инструментов в арсенале инструментов специалист по данным.

Что это?

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

Большинство рабочих процессов построено из набора отдельных задач, связанных друг с другом своими зависимостями.Эту концепцию можно представить в виде ориентированного ациклического графа (DAG). Группы DAG имеют топологический порядок, поэтому вычисления могут выполняться только в указанном порядке, без возврата к предыдущим шагам, которые вызывают дополнительную сложность. Например, приготовление еды — это пошаговый процесс, в котором могут быть параллельные шаги и решения, но при этом вы обычно не можете вернуться к более раннему шагу (вы не можете отменить выпечку торта).

Например, для специалистов по обработке данных, рабочие процессы присутствуют практически в любой области, где возможна автоматизация.Сюда входят такие задачи, как автоматизация процессов DevOps, получение данных, конвейеры машинного обучения, передача данных, мониторинг заданий cron и т. Д. Лучше всего думать об Airflow как о платформе автоматизации, ориентированной на пространство данных. Много раз организации начинали со сценария или ручного процесса для копирования и передачи данных, но эволюционировали до желания автоматизировать этот поток данных. Давно прошли те времена, когда специалистам по обработке данных приходилось запускать скрипт каждую пятницу вечером в рамках планового обновления базы данных.

Преимущества

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

Еще одно преимущество Airflow и аналогичных инструментов состоит в том, что они упрощают выполнение потенциально больших операций с данными. Например, если вы хотите запускать SQL-запрос каждый день или если вы хотите запускать его каждый час и хранить результаты этого SQL-запроса в виде файла Parquet в корзине S3, эту последовательность операций можно выполнить с помощью готовые компоненты в Airflow. Этот SQL-запрос потенциально может генерировать терабайты данных, но Airflow на самом деле это не волнует, потому что он не обязательно просматривает каждую строку, выходящую из этого запроса.Воздушный поток координирует движение наиболее важных битов потока данных.

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

Применение в полевых условиях

У меня большой опыт работы с клиентами в области биологических наук на местах. На ум приходят два недавних примера. Один клиент строил научный конвейер для переноса данных из лабораторных приборов в систему хранения научных данных. Их специалистам по данным нужно было уметь писать произвольные рабочие процессы для каждого источника данных. Проблема заключалась в том, что каждый из этих источников данных (различное лабораторное оборудование, включая записные книжки электронных лабораторий) генерировал данные в разных форматах, некоторые из которых были несовместимы с прямой загрузкой в ​​систему ниже по потоку.Эта несовместимость означала, что данные были недоступны для анализа, и, более того, пользователи не сочли бы систему научных данных полезной, если бы в ней не было их данных.

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

Другой клиент имел более традиционную потребность выполнить ETL (извлечение, перевод и загрузка). Это давний термин, обозначающий перемещение данных от источника к месту назначения. Люди могут быть удивлены, узнав, сколько специалистов по данным используют Airflow в среде AWS и что в этой экосистеме доступно множество существующих компонентов. Airflow напрямую интегрируется с их системой EMR (Elastic Map Reduce) на AWS для выполнения заданий Spark вместе с произвольными скриптами Python, которые они написали для выполнения основных периодических заданий.Они автоматизировали свои рабочие процессы и могут отслеживать успех каждой работы; им больше не нужно помнить, чтобы запускать их вручную или вмешиваться. Теперь они могут просто отслеживать рабочие процессы и быть уверены, что их данные регулярно обновляются.

Четыре очевидных преимущества

One, Airflow — это открытый исходный код. Хотя это не для всех, многие специалисты по данным предпочитают поддерживать своих коллег в сообществе и работать с ними, а не покупать коммерческое программное обеспечение. Есть преимущества: вы можете скачать его и сразу же начать использовать по сравнению с длительным циклом закупок и процессом получения ценового предложения, подачи предложения, обеспечения бюджета, подписания лицензионного контракта и всего прочего.Это освобождает возможность контролировать ситуацию и делать выбор, когда захотите.

Два, это очень гибко. В некоторых коммерческих инструментах они хороши, пока вы не сойдете с основного пути и не попытаетесь сделать что-то немного творческое, выходящее за рамки того, для чего был разработан инструмент. Airflow был разработан для работы в архитектуре, которая является стандартной почти для каждой среды разработки программного обеспечения. Генерация динамического конвейера — еще один привлекательный аспект его гибкости. Вы можете запустить один большой сервер Airflow или несколько маленьких; гибкость существует для поддержки любого подхода.

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

В-четвертых, он отлично работает в облачной среде. Есть варианты запустить его в облачном, масштабируемом режиме; он будет работать с Kubernetes, и он будет работать с автоматическим масштабированием облачных кластеров.По сути, это система Python, которая развертывается как пара служб. Таким образом, любая среда, которая будет запускать один или несколько Linux-серверов с Python и базой данных для управления состоянием, может запускать эту среду, что открывает множество возможностей для специалистов по данным.

Недостатки

Сильная зависимость Airflow от Python как для языка рабочего процесса (DAG), так и для самого приложения, иногда может быть как сильной, так и слабой стороной, поскольку разработка DAG и поддержка приложения требуют эффективного знание Python.Расширенные функции, такие как аутентификация, нестандартные источники данных и распараллеливание, требуют специальных знаний об инфраструктуре и часто должны настраиваться вручную как часть разработки эффективного рабочего процесса. Кодовая база Airflow, специфичная для Linux, и невозможность параллельного запуска нескольких версий Python ограничили его распространение. Кроме того, он не поддерживает быстрые изменения рабочих процессов «на лету», поэтому вы должны целенаправленно подходить к тому, что делаете.

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

Airflow выполняет код Python и делает это несколько идиоматическим образом. Вы не можете просто дать ему произвольный сценарий Python; вы должны написать его в специальных конструкциях Airflow. Каждый скрипт Python, который вы пишете как рабочий процесс, требует управления, и можно легко попасть в ловушку, избегая хороших практик разработки программного обеспечения в процессе быстрого создания и выполнения кода Airflow.Например, отсутствие контроля версий, согласованности кода, правил, проверок стиля и т. Д. Может создать потенциальное минное поле, особенно для новых сотрудников, приходящих в созданную вами среду. В крайнем случае, это может привести к беспорядку, который требует дополнительных усилий для очистки.

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

Получение максимальной отдачи от Airflow

Для долгосрочного успеха ваших экземпляров Airflow необходимо учитывать несколько важных «передовых практик». Во-первых, относитесь к своим DAG как к разрабатываемому коду и используйте стандартные методы разработки программного обеспечения для этого кода. Структурируйте свое развертывание, чтобы использовать автоматизацию и контроль версий для управления группами DAG; по умолчанию Airflow предоставляет вам каталог и ожидает, что вы поместите свой код в каталог, что требует ручных локальных изменений.Вместо этого установите правила для внесения всех изменений в центральный репозиторий Git, такой как GitLab или GitHub, который затем можно автоматически синхронизировать с вашим сервером Airflow. Эту синхронизацию можно выполнить с помощью рабочего процесса, который выполняется на вашем сервере Airflow, который извлекает код из вашего репозитория Git по заданному расписанию; делайте git pull ежечасно, если хотите. Также рекомендуется ограничить доступ к серверу, чтобы запретить пользователям редактировать файлы в каталоге. Таким образом, любые конфликты могут быть разрешены в репозитории, а не на сервере.

Команды также должны иметь стратегию обработки ветвлений и слияния. Это может быть что-то настолько простое, как требование, чтобы все всегда переустанавливали код и имели одну ветвь. Или это может быть сложнее с ветвями функций, многочисленными уровнями, проверкой кода комитетом и запросами на вытягивание, чтобы определить, что будет объединено в производство. Определив это заранее, вы сможете свести к минимуму конфликты, которые могут повлиять на темп разработки.

Поскольку это весь код Python, неплохо было бы его протестировать.PyTest — это хорошо известная среда тестирования Python, которую можно использовать по-разному. Во-первых, в определенных обстоятельствах это позволит вам провести модульное тестирование вашего пользовательского кода. Во-вторых, его можно настроить для проведения «дымового теста» сценариев рабочего процесса. Дымовое тестирование в основном предназначено для выявления синтаксических ошибок или других отклонений от стандартов, которые вы могли пропустить. Помимо этого, вы можете заняться еще более сложным интеграционным тестированием. Например, если у вас есть система непрерывной интеграции (CI), вы можете автоматически запускать интеграционные тесты для изменений в коде, когда они помещаются в репозиторий.В этом проекте система CI запускает предопределенный сценарий, который создает копию нового кода, тестирует его, помечает любые ошибки и отправляет отчет с отчетом о состоянии и журнале ошибок, снижая риск развертывания любых ошибок на сервере.

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

Наконец, есть коммерческие поставщики и шаблоны с открытым исходным кодом, на которые стоит обратить внимание, если Airflow кажется сложным для развертывания и управления.Во-первых, Turbine — это шаблон CloudFormation с открытым исходным кодом для AWS, который предназначен для развертывания конфигурации с полным автоматическим масштабированием одним щелчком мыши. Кроме того, Astronomer предлагает коммерческую поддержку и развертывание SaaS для Airflow, что особенно привлекательно для организаций, которые в значительной степени полагаются на Airflow и нуждаются в стабильности и опыте от поставщика.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *