Чем Apache Airflow лучше cron и как на него перейти

cron vs Apache Airflow, Apache AirFlow примеры курсы обучение, обучение дата-инженеров, инженер данных курсы примеры обучение, DAG airflow example, инженерия данных с Apache AirFlow пример, обучение большим данным, Школа Больших Данных Учебный центр Коммерсант

Зачем переходить с cron на AirFlow и как это сделать наиболее эффективно: практические тонкости планирования и оркестрации пакетных процессов для дата-инженера с примерами и лайфхаками.

Что такое cron и почему его недостаточно для инженерии данных

Дата-инженеры часто работают с утилитой cron (Command Run ON), чтобы автоматически запускать на выполнение скрипты на сервере в назначенное время с заранее определенной периодичностью. Выполняемые скрипты называются заданиями, а их логика описывается в специальных сrontab-файлах в виде таблиц с расписанием запуска скриптов и программ. Для каждого пользователя системы создается отдельный crontab-файл со своим расписанием. Утилита cron встроена в Linux и доступна в каждом дистрибутиве. Справедливости ради отметим, что в дистрибутивах с поддержкой systemd cron считается устаревшим и заменен утилитой systemd.timer, предназначение и функциональные возможности которой идентичны оригиналу. Впрочем, до сих пор популярность и фактически частота использования cron остаются на очень высоком уровне.

Однако, сron имеет ряд недостатков. В частности, его использование требует дисциплины, если задание не выполнилось по какой-либо, в т.ч. внешней причине, нужно перезапускать скрипт. Кроме того, мониторинг выполнения самого рабочего процесса является сложной задачей. Хотя запустив команду crontab —l можно получить список текущих заданий, а crontab —e автоматически запустит текстовый редактор и загрузит в него файл конфигурации cron, на практике это не всегда удобно. А в промышленной инженерии данных может быть вообще не применимо, когда речь идет о сотнях заданий cron, часть из которых имеет взаимозависимые отношения. На ручное управление и мониторинг уходит много времени и сил. Причем, дата-инженеру важно не только знать статус каждого cron-задания, но и контролировать их, предупреждать об аномалиях, получая подробные ответы на следующие вопросы:

  • работа началась?
  • каково время начала работы?
  • совпало ли фактическое начало с планируемым?
  • работа завершена?
  • каково время окончания работы?
  • как долго выполнялась работа?
  • если работа не завершена, было ли выброшено исключение и какое?

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

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

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

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

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

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

Чтобы перейти от cron в Airflow, дата-инженеру потребуется выполнить следующие действия:

  • преобразовать cron-задания в DAG-граф. Если заданий cron много, это можно автоматизировать, написав соответствующий bash-скрипт;
  • развернуть собственный сервер AirFlow или использовать управляемый сервис типа Amazon Managed Workflows для Apache Airflow (MWAA) или на платформе Яндекс.Облако. Это управляемая облачная служба оркестрации Apache Airflow упрощает настройку и эксплуатацию сквозных конвейеров данных в любом масштабе. При использовании MWAA нужна корзина AWS S3, где будут размещаться DAG, которые MWAA считывает для отображения на панели пользовательского интерфейса.
  • настройка CI/CD с использованием конвейеров BitBucket или другого Git-подобного решения для автоматической сборки, запуска тестов и развертывания DAG.

Освойте администрирование и эксплуатацию Apache Hive для аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://server-gu.ru/cron-usage/
  2. https://medium.com/reflex-media/effective-cron-job-management-monitoring-with-apache-airflow-e410f020bdbe
  3. https://habr.com/ru/company/tuturu/blog/530410/
Поиск по сайту