- Why:\n - User-facing docs mixed Airflow and legacy CLI ingest paths and caused confusion\n- What:\n - Rework README quick start and status to use DAG chain ddl_init -> kafka_load -> etl_pipeline\n - Rewrite runbook as canonical Airflow-first execution flow\n - Sync architecture diagrams/sequence and DQ wording with current SQL and DAG behavior\n- Check:\n - Verified updated sections and removed stale markers with rg in README.md, docs/ARCHITECTURE.md, plans/runbook.md
88 lines
3.3 KiB
Markdown
88 lines
3.3 KiB
Markdown
# Runbook: Airflow-first запуск демо
|
|
|
|
Документ фиксирует канонический пользовательский сценарий через Airflow DAG'и.
|
|
Внутренности слоёв ClickHouse описаны в `plans/clickhouse_ddl.md` и `docs/ARCHITECTURE.md`.
|
|
|
|
## Предпосылки
|
|
|
|
- Docker + Docker Compose.
|
|
- Доступ к Docker daemon.
|
|
|
|
## Канонический сценарий (через Airflow)
|
|
|
|
1) Поднять инфраструктуру:
|
|
|
|
```bash
|
|
make up
|
|
docker compose ps
|
|
```
|
|
|
|
2) Инициализировать схему ClickHouse:
|
|
|
|
```bash
|
|
docker compose exec -T airflow-webserver airflow dags trigger ddl_init
|
|
```
|
|
|
|
3) Загрузить данные в Kafka через DAG `kafka_load`:
|
|
|
|
```bash
|
|
# Рекомендуется для демо: небольшой срез
|
|
docker compose exec -T airflow-webserver airflow dags trigger kafka_load \
|
|
--conf '{"limit": 50, "reset_topics": true}'
|
|
|
|
# Полная загрузка (limit=0 по умолчанию)
|
|
docker compose exec -T airflow-webserver airflow dags trigger kafka_load \
|
|
--conf '{"reset_topics": true}'
|
|
```
|
|
|
|
4) Запустить ETL:
|
|
|
|
```bash
|
|
docker compose exec -T airflow-webserver airflow dags trigger etl_pipeline \
|
|
--conf '{"full_refresh": true}'
|
|
```
|
|
|
|
5) Проверить результат:
|
|
|
|
```bash
|
|
docker compose exec -T clickhouse clickhouse-client --user=default --password=123456 \
|
|
--query "SELECT count() FROM stg.browser_raw"
|
|
docker compose exec -T clickhouse clickhouse-client --user=default --password=123456 \
|
|
--query "SELECT count() FROM ods.browser_event"
|
|
docker compose exec -T clickhouse clickhouse-client --user=default --password=123456 \
|
|
--query "SELECT count() FROM dds.event"
|
|
docker compose exec -T clickhouse clickhouse-client --user=default --password=123456 \
|
|
--query "SELECT * FROM dm.dq_summary ORDER BY layer, table_name, check_name"
|
|
```
|
|
|
|
## Параметры DAG'ов
|
|
|
|
- `ddl_init`:
|
|
- `verify_only` (bool, default: `false`) — только проверка схемы, без применения DDL.
|
|
- `kafka_load`:
|
|
- `limit` (int, default: `0`) — количество строк на поток (`0` = весь файл).
|
|
- `reset_topics` (bool, default: `true`) — удалить и создать топики заново.
|
|
- `etl_pipeline`:
|
|
- `full_refresh` (bool, default: `true`) — очищать DDS перед загрузкой.
|
|
- `wait_stg_timeout_sec` (int, default: `600`) — таймаут ожидания данных в STG.
|
|
|
|
## Роль Make-таргетов
|
|
|
|
- `make up` — основной способ поднять стек.
|
|
- `make ddl`, `make transform` — технический fallback для низкоуровневой диагностики вне Airflow.
|
|
- Загрузка в Kafka в runbook выполняется только через DAG `kafka_load`.
|
|
|
|
## Важные примечания
|
|
|
|
- Для связей контейнеров используйте `kafka:29092` (не `localhost:9092`).
|
|
- После `docker compose down -v` нужно заново выполнить:
|
|
1. `ddl_init`
|
|
2. `kafka_load`
|
|
3. `etl_pipeline`
|
|
|
|
## Связанные документы
|
|
|
|
- План ingest: `plans/kafka_ingest_plan.md`
|
|
- План DAG'ов: `plans/airflow_dags_plan.md`
|
|
- Архитектура: `docs/ARCHITECTURE.md`
|