Зачем переходить с 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.
Код курса
ADH-AIR
Ближайшая дата курса
Продолжительность
ак.часов
Стоимость обучения
0 руб.
Освойте администрирование и эксплуатацию Apache Hive для аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Источники