Введение в группы DAG Airflow и лучшие практики
Введение в группы DAG Airflow и лучшие практики

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

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

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

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

Apache Airflow — это платформа управления распределенными рабочими процессами с открытым исходным кодом, разработанная для оркестрации данных. Первоначально проект Airflow был инициирован Максимом Бошеменом из Airbnb. После успеха проекта Apache Software Foundation быстро принял проект Airflow сначала в качестве проекта-инкубатора в 2016 году, а затем в качестве проекта верхнего уровня в 2019 году. Airflow предоставляет пользователям возможность программно создавать, планировать и контролировать конвейеры данных. Ключевой особенностью Airflow является то, что он позволяет пользователям легко создавать заранее определенные конвейеры данных, используя гибкую среду Python.

Введение в Airflow DAG

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

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

Определить конвейер данных как график

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

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

Определить тип ориентированного графа

Существует два типа ориентированных графов: циклические графы и ациклические графы.

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

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

Определить группу обеспечения доступности баз данных

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

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

Архитектура воздушного потока

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

Воздушный поток состоит из 4 основных частей:

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

Лучшие практики Airflow DAG

Следуйте приведенным ниже рекомендациям, чтобы внедрить Airflow DAG в вашей системе.

  • Напишите чистый DAG
  • Разрабатывайте воспроизводимые задачи
  • Эффективно обрабатывайте данные
  • Управление ресурсами

Напишите чистый DAG

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

  • Используйте соглашения о стилях. Принятие единого, чистого стиля программирования и последовательное применение его ко всем группам обеспечения доступности баз данных Airflow — это первый шаг к созданию чистой и согласованной группы обеспечения доступности баз данных. При написании кода самый простой способ сделать его более понятным и понятным — использовать часто используемые стили.
  • Централизованное управление учетными данными: Airflow DAG Взаимодействует со многими различными системами, создавая множество различных типов учетных данных, таких как база данных. данные, облачное хранилище и т. д. Повезло из-за Airflow Получение данных о соединении из хранилища соединений позволяет легко сохранить учетные данные из кода определения.
  • Используйте группы задач для группировки связанных задач: сложные группы обеспечения доступности баз данных Airflow могут быть трудными для понимания из-за огромного количества требуемых задач. Новая функция Airflow 2 под названием «Группы задач» помогает управлять этими сложными системами. Группы задач эффективно делят задачи на более мелкие группы, что упрощает управление и понимание структуры DAG.

Разрабатывайте воспроизводимые задачи

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

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

Эффективно обрабатывайте данные

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

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

Управление ресурсами

При обработке больших объемов данных это может привести к Airflow Cluster Перегружен. Поэтому подходит при Управлении помощь помогает облегчить это бремя.

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

в заключение

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

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода