Недавно мы писали про устранение зависших в очереди задач в Apache AirFlow 2.6. Сегодня разберемся с другими новинками этого релиза, которые особенно важны для дата-инженера: настраиваемые поля DAG, добавление собственных уведомлений, управление ресурсами, кластеризация исполнителей Kubernetes и еще множество полезных возможностей.
Главные новинки и исправления весенних выпусков Apache AirFlow в 2023 году
30 апреля 2023 года состоялся официальный выпуск Apache AirFlow 2.6.0. А спустя 2 недели, 16 мая, вышло дополнение 2.6.1. Эти выпуски содержат более 500 коммитов, включая около 40 новых функций, 50 общих улучшений и примерно 50 исправлений ошибок.
Из наиболее значительных изменений этих релизов можно отметить следующие:
- повышение стабильности и производительности фреймворка, включая снижение потребления памяти, улучшенную обработку ошибок и улучшенную поддержку Python 3.9;
- настраиваемые поля DAG, что пригодится дата-инженеру, если нужно добавить дополнительную информацию или собственные поля метаданных. К примеру, можно создать настраиваемое поле DAG для хранения информации о том, какие данные используются в конвейере или параметры его запуска. Это пригодится для анализа результатов выполнения DAG и отладки. Настраиваемые поля DAG реализованы с помощью нового класса Python под названием DAGSchema.
- добавлен новый объект, расширяющий слой добавления уведомлений в DAG. Пользователи могут создавать логику уведомлений из нового базового объекта и вызывать ее непосредственно из своих файлов DAG. Для этого используется абстрактный класс BaseNotifier, предоставляющий базовую структуру для отправки уведомлений в Airflow с использованием различных функций обратного вызова (on_*__callback). Чтобы расширить класс BaseNotifier, нужно создать новый класс-наследник и переопределить в нем метод notify()своей собственной реализацией, которая отправляет уведомление. Этот метод принимает единственный параметр — контекст AirFlow, который содержит информацию о текущей задаче и ее выполнении.
- в версиях 2.6.0 и 2.6.1 добавлена возможность создания нового ресурса для управления заданиями, чтобы более гибко и эффективно ресурсами в системе. Ресурс для управления заданиями создается с помощью Python-класса BaseExecutor, который позволяет определить новый ресурс для выполнения задач в Apache AirFlow. После определения ресурса его можно использовать его в системе, чтобы контролировать, какие задачи выполняются и на каких ресурсах. Так можно более эффективно использовать ресурсы в системе, снижая нагрузку на каждый ресурс и улучшить общую производительность системы. Например, создать новый ресурс, который будет использовать только определенные типы хранилищ данных.
- Исполнитель Kubernetes теперь поддерживает кластеризацию, что позволяет распределять задачи между его несколькими экземплярами. Это снижает нагрузку на каждый исполнитель Kubernetes и повышает надежность всей системы.
- Теперь Kubernetes Pod Operator позволяет управлять ресурсами напрямую из DAG, что также позволяет более эффективно использовать ресурсы и улучшает производительность системы. Этот оператор AirFlow позволяет запускать Docker-контейнеры в Kubernetes-кластере и управлять ими напрямую из DAG. С помощью Kubernetes Pod Operator можно задавать параметры запуска контейнеров, такие как образ, ресурсы и переменные окружения, и контролировать их выполнение, используя стандартные механизмы Apache AirFlow, такие как триггеры и зависимости. Одним из преимуществ использования Kubernetes Pod Operator возможность масштабировать выполнение задач в Kubernetes-кластере. Например, запустить несколько экземпляров контейнеров на разных узлах кластера, чтобы увеличить производительность и обеспечить отказоустойчивость. Также Kubernetes Pod Operator позволяет использовать Kubernetes-ресурсы (Persistent Volume Claims и ConfigMaps) в DAG, упрощая работу с данными и конфигурацией. Для использования Kubernetes Pod Operator необходимо настроить подключение к Kubernetes-кластеру в Apache AirFlow и задать параметры для запуска контейнера в DAG. После этого можно использовать этот оператор в DAG, чтобы запускать контейнеры в Kubernetes-кластере и управлять ими напрямую из DAG.
- Также в Apache AirFlow 2.6.0 и 2.6.1 улучшена поддержка для Databricks и Snowflake. В частности, была добавлена поддержка для Databricks Delta Lake и Databricks SQL Analytics. Теперь дата-инженер может использовать эти инструменты в DAG для анализа данных и машинного обучения. Также добавлена поддержка для Snowflake External Tables, чтобы работать с данными, которые хранятся во внешних таблицах. А улучшенная поддержка Snowflake OAuth позволяет более безопасно работать с данными в AirFlow.
В заключение отметим наиболее значимые исправления ошибок в Apache AirFlow 2.6.0 и 2.6.1. В частности, исправлена проблема с отображением метаданных в пользовательском интерфейсе. Ранее некоторые метаданные, такие как даты создания и изменения DAG, не корректно отображались в пользовательском интерфейсе фреймворка. Также исправлены проблемы с отображением логов в GUI. Наконец, устранены ошибки с планированием и выполнением задач, включая проблемы с зависимостями, планированием и выполнением задач по расписанию. Для улучшения проверки зависимостей задач исправлены проблемы с циклическими зависимостями, которые могли приводить к зацикливанию и невозможности запуска задач. Теперь зависимости задач определяются более точно, снижая вероятность ошибок при их планировании. Также внесены изменения в код планирования задач, чтобы они не запускались преждевременно или с опозданием.
А что нового появилось в AirFlow версии 2.7, читайте здесь.
Узнайте больше про использование Apache AirFlow для дата-инженерии и аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Источники