В рамках обучения инженеров больших данных, вчера мы рассказывали о новой версии Apache AirFlow 2.0, вышедшей в декабре 2020 года. Сегодня рассмотрим особенности перехода на этот релиз: в чем сложности миграции и как их решить. Читайте далее про сохранение кастомизированных настроек, тонкости работы с базой метаданных и конфигурацию для развертывания тестовой среды.
Нельзя просто так взять и перейти на Apache AirFlow 2.0
Рассмотрим кейс американской ИТ-компании Lirio, которая специализируется на применении методов искусственного интеллекта для облегчения коммуникаций с людьми, имеющих проблемы (особенности) физического или ментального здоровья [1]. Разумеется, когда речь идет о машинном обучении и обработке больших объемов информации, в работу вступают технологии Big Data. Оставив за рамкой этой статьи интересную архитектуру и принципы работы приложений Lirio, погрузимся в инженерию данных, разобрав, с какими ошибками столкнулись дата-инженеры компании при переходе на новую версию Apache Airflow.
Прежде всего стоит пояснить, зачем вообще компании Lirio понадобилась миграция на AirFlow 2.0. Одной из главных причин перехода стала измененная архитектура KubernetesExecutor и KubernetesPodOperator, которые позволяют пользователям гибко настраивать и динамически запускать задачи как отдельные модули Kubernetes для оптимизации общего потребления ресурсов [2]. Доступ к полному API Kubernetes для создания yaml «podtemplatefile» вместо ограничений частичного набора конфигураций в файле airflow.cfg и замена словаря executor_config параметром pod_override, который принимает объект Kubernetes V1Pod [3], значительно облегчают работу дата-инженера, предоставляя единый интерфейс для комплексной работы вместо сотен отдельных заданий.
Однако, на практике в ходе миграции на AirFlow 2.0 инженеры данных компании Lirio столкнулись со следующими трудностями [2]:
- требовалось сохранить кастомизированные настройки конфигурации в новой версии. Для решения этой проблемы переопределения файла конфигурации можно использовать переменных среды.
- Группы DAG-задач не загружались в сериализованную таблицу DAG даже после выполнения миграции базы данных даже после запуска команды «airflow db upgrade». Группы DAG не отображались в пользовательском интерфейсе. Рестарт базы метаданных с помощью команд «airflow db reset» и «airflow db init» не принес результатов, а только вызвал фатальные ошибки. В итоге дата-инженерам Lirio пришлось создать соединение с базой данных и вручную удалить проблемные таблицы и объекты. После этого команда «airflow db init» заработала корректно и решила проблему сериализации DAG.
- зависание задач в тестовой среде (QA, Quality Assurance) из-за совместного использования базы метаданных с development-средой. После миграции на AirFlow0 в QA-среде стали возникать различные проблемы с планированием и очередями: задания зависали, а задачи становились в очередь, но не запускались. Не помогла настройка отдельного пространства имен в конфигурационном файле airflow.cfg свойства sql_alchemy_schema для работы с SQLAlchemy — Python-библиотекой реляционных СУБД с применением технологии ORM, которая обеспечивает синхронизацию объектов Python и записей реляционной СУБД. Она позволяет описывать структуры баз данных и способы взаимодействия с ними на языке Python без использования SQL [4]. Более того, это изменение этого свойства вызвало сбой в работе команд «airflow db init» и «airflow db reset». Проблема была решена через развертывание отдельного экземпляра базы данных для QA-среды.
Однако, несмотря на все вышеотмеченные сложности с миграцией на новую версию, дата-инженеры Lirio в целом отмечают положительные результаты от использования новой версии самого популярного ETL-маршрутизатора и инструмента автоматизации пакетных заданий для обработки Big Data. Об особенностях тестирования DAG-конвейеров Apache Airflow читайте в нашей новой статье.
Подробнее разобраться со всеми особенностями инженерии больших данных на примерах практического использования и администрирования Apache Airflow вы сможете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Источники