Первоначальная реализация

This commit is contained in:
2025-10-19 19:59:28 +03:00
parent a493750341
commit 48911d7f62
15 changed files with 1479 additions and 0 deletions
+219
View File
@@ -0,0 +1,219 @@
# Educational Airflow Setup for Beginners
Простой учебный стенд Apache Airflow для начинающих, изучающих SQL и Python.
## 🎯 Цель проекта
Создать максимально простую среду для изучения Apache Airflow, где все переменные окружения захардкожены для удобства студентов.
## 📋 Предварительные требования
- Docker и Docker Compose
- Базовые знания Python и SQL
- Веб-браузер для доступа к интерфейсу Airflow
## 🚀 Быстрый старт
### 1. Клонирование и настройка
```bash
# Перейдите в директорию проекта
cd airflow-docker
# Создайте необходимые директории
mkdir -p dags data/input data/output logs
```
### 2. Запуск стенда
```bash
# Запустите все сервисы
docker-compose up -d
```
### 3. Доступ к интерфейсам
- **Airflow UI**: http://localhost:8080
- Логин: `admin`
- Пароль: `admin`
- **PostgreSQL для тренировок**: `localhost:5432`
- База данных: `training`
- Пользователь: `student`
- Пароль: `student`
- **PostgreSQL для метаданных Airflow**: `localhost:5434`
- База данных: `airflow`
- Пользователь: `airflow`
- Пароль: `airflow`
## 🏗️ Архитектура стенда
```mermaid
graph TB
A[Airflow Webserver] --> B[PostgreSQL Metadata]
C[Airflow Scheduler] --> B
D[Educational DAGs] --> E[PostgreSQL Training]
D --> F[Local Filesystem]
A -- порт 8080 --> G[Пользователь]
E -- порт 5432 --> H[SQL Клиент]
subgraph "Контейнеры Docker"
A
C
B
E
end
subgraph "Локальная файловая система"
F
D
end
```
## 📁 Структура проекта
```
airflow-docker/
├── docker-compose.yml # Конфигурация Docker
├── .env # Переменные окружения (создается автоматически)
├── dags/ # DAG файлы для обучения
│ ├── hello_world_dag.py # Базовый пример
│ ├── sql_basic_dag.py # Работа с SQL
│ ├── file_operations_dag.py # Обработка файлов
│ └── data_processing_dag.py # ETL пайплайн
├── data/ # Данные для упражнений
│ ├── input/ # Входные данные
│ └── output/ # Результаты обработки
├── logs/ # Логи Airflow
└── README.md # Эта инструкция
```
## 🎓 Учебные материалы
### Неделя 1: Основы Airflow
**Цели:**
- Понимание структуры DAG
- Создание простых задач
- Настройка зависимостей между задачами
**Примеры DAG:**
- `hello_world_dag.py` - базовые операторы Python
- `sql_basic_dag.py` - работа с базами данных
### Неделя 2: Интеграция с данными
**Цели:**
- Подключение к PostgreSQL
- Выполнение SQL запросов
- Обработка файлов CSV
**Примеры DAG:**
- `file_operations_dag.py` - работа с файлами
- `data_processing_dag.py` - ETL процессы
### Неделя 3: Продвинутые возможности
**Цели:**
- Условное выполнение задач
- Обработка ошибок
- Параметризация workflows
**Примеры DAG:**
- `branching_dag.py` - условная логика
- `error_handling_dag.py` - обработка ошибок
## 🔧 Технические детали
### Переменные окружения
Все переменные захардкожены для простоты:
```env
# Airflow
AIRFLOW_USER=admin
AIRFLOW_PASSWORD=admin
# PostgreSQL для метаданных Airflow
POSTGRES_USER=airflow
POSTGRES_PASSWORD=airflow
POSTGRES_DB=airflow
# PostgreSQL для учебных упражнений
POSTGRES_USER=student
POSTGRES_PASSWORD=student
POSTGRES_DB=training
```
### Порты
- `8080` - Airflow Webserver
- `5432` - PostgreSQL для тренировок
- `5433` - PostgreSQL для метаданных Airflow
## 🛠️ Управление стендом
### Запуск сервисов
```bash
docker-compose up -d
```
### Остановка сервисов
```bash
docker-compose down
```
### Просмотр логов
```bash
# Логи Airflow
docker-compose logs airflow-webserver
docker-compose logs airflow-scheduler
# Логи PostgreSQL
docker-compose logs postgres-training
docker-compose logs postgres-metadata
```
### Перезапуск конкретного сервиса
```bash
docker-compose restart airflow-webserver
```
## 🐛 Решение проблем
### DAG не появляется в интерфейсе
- Проверьте, что файл находится в папке `dags/`
- Убедитесь в правильности синтаксиса Python
- Проверьте логи планировщика: `docker-compose logs airflow-scheduler`
### Ошибки подключения к базе данных
- Убедитесь, что PostgreSQL запущен: `docker-compose ps`
- Проверьте логи PostgreSQL: `docker-compose logs postgres-training`
### Задачи завершаются с ошибкой
- Проверьте логи задачи в интерфейсе Airflow
- Убедитесь в наличии необходимых Python пакетов
## 📚 Дополнительные ресурсы
- [Официальная документация Airflow](https://airflow.apache.org/docs/)
- [Учебные материалы в родительской папке](../)
## 👥 Для преподавателей
### Добавление новых DAG
1. Создайте файл Python в папке `dags/`
2. Убедитесь в правильности структуры DAG
3. Файл автоматически появится в интерфейсе Airflow
### Изменение конфигурации
Все настройки находятся в `docker-compose.yml` и захардкожены для простоты использования.
### Расширение функциональности
Для добавления новых сервисов или изменения конфигурации отредактируйте `docker-compose.yml`.
---
**Примечание**: Этот стенд предназначен исключительно для учебных целей. Для production использования требуется дополнительная настройка безопасности.