diff --git a/01 - Введение в Airflow.md b/01 - Введение в Airflow.md index c5f3c54..1a8dcc5 100644 --- a/01 - Введение в Airflow.md +++ b/01 - Введение в Airflow.md @@ -1,9 +1,17 @@ # Почему Apache Airflow стал незаменимым инструментом для работы с данными -# Почему Apache Airflow стал незаменимым инструментом для работы с данными Обычно работа с автоматизацией процессов обработки информации начинается с ручного управления задачами. Например, в машинном обучении это может включать подготовку наборов данных, обучение моделей, анализ результатов и развертывание решений в рабочей среде. По мере роста команды и развития продукта эти процессы усложняются: увеличивается количество повторяющихся операций, появляются зависимости между задачами, и каждая из них приобретает всё большее значение для бизнеса. В результате формируется полноценный конвейер задач, требующий регулярного запуска. -![Введение в Apache Airflow](./_attachments/airflow_introduction.png) +```mermaid +flowchart LR + in[Данные] --> op1[Операция № 1] --> op2[Операция № 2] --> op3[Операция № 3] --> out[Данные] + + subgraph PIPE[Конвейер] + op1 + op2 + op3 + end +``` Аналогичная ситуация возникает при обработке данных: в определенный момент необходимо собрать актуальную информацию, преобразовать её и выполнить различные операции — создать витрину данных и сохранить в базу, обучить модель машинного обучения, подготовить отчет в Excel и разослать его по электронной почте. Вариантов множество, и для решения таких задач требуются специализированные инструменты. diff --git a/02 - Понятное введение в ключевые понятия Airflow.md b/02 - Понятное введение в ключевые понятия Airflow.md index ffadefa..7fe38fb 100644 --- a/02 - Понятное введение в ключевые понятия Airflow.md +++ b/02 - Понятное введение в ключевые понятия Airflow.md @@ -13,6 +13,18 @@ Проще говоря, DAG — это упорядоченный набор задач, которые выполняются строго по расписанию и никогда не повторяются в рамках одного запуска. Создавая пайплайны для обработки данных, вы фактически создаете DAG. ![Пример направленного ациклического графа](_attachments/dag_example_directed_graph.png) +```mermaid +flowchart LR + n1((1)) --> n2((2)) + n1 --> n3((3)) + + n2 --> n4((4)) + n3 --> n6((6)) + n6 --> n7((7)) + + n7 --> n12 + n4 --> n12((12)) +``` # Шаги вашего пайплайна: Задачи @@ -26,14 +38,52 @@ На примере ниже видно, как задача E зависит от успешного завершения всех предыдущих задач: -![DAG как последовательность задач](_attachments/dag_as_task_sequence.png) +```mermaid +flowchart LR + A["Task A"] --> B["Task B"] + A --> C["Task C"] + + B --> D["Task D"] + C --> D + + D --> E["Task E"] +``` Airflow позволяет создавать сложные сценарии: - Зависимости между разными DAG-ами с помощью TriggerDagRunOperator и ExternalTaskSensor - Условное выполнение задач в зависимости от результатов предыдущих шагов - Сложные ветвления и параллельные ветки выполнения -![Пример сложного DAG в Airflow](_attachments/complex_dag_example.png) +```mermaid +flowchart LR + %% без цветов, только форма и рамка + classDef taskGroup stroke-width:3px; + classDef endpoint stroke-width:2px,stroke-dasharray: 5 3; + + start(("начало")):::endpoint --> print_start["print_start_bash"] + + print_start --> py1["python_function_with_input_1"] + print_start --> py4["python_function_with_input_4"] + + py1 --> py2["python_function_with_input_2"] + py1 --> py3["python_function_with_input_3"] + + py4 --> py5["python_function_with_input_5"] + py4 --> py6["python_function_with_input_6"] + + py2 --> py_join["python_function_with_input"] + py3 --> py_join + py5 --> py_join + py6 --> py_join + + py_join --> tg["task_group_with_two_tasks"]:::taskGroup + + tg --> dyn123["dynamic_task_123"] + tg --> dyn456["dynamic_task_456"] + + dyn123 --> finish(("конец")):::endpoint + dyn456 --> finish +``` # Инструменты для выполнения: Операторы diff --git a/_attachments/airflow_introduction.png b/_attachments/airflow_introduction.png deleted file mode 100644 index aa74d7f..0000000 Binary files a/_attachments/airflow_introduction.png and /dev/null differ diff --git a/_attachments/complex_dag_example.png b/_attachments/complex_dag_example.png deleted file mode 100644 index 7d2cdf0..0000000 Binary files a/_attachments/complex_dag_example.png and /dev/null differ diff --git a/_attachments/dag_as_task_sequence.png b/_attachments/dag_as_task_sequence.png deleted file mode 100644 index 5d24927..0000000 Binary files a/_attachments/dag_as_task_sequence.png and /dev/null differ