- 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
3.3 KiB
3.3 KiB
Runbook: Airflow-first запуск демо
Документ фиксирует канонический пользовательский сценарий через Airflow DAG'и.
Внутренности слоёв ClickHouse описаны в plans/clickhouse_ddl.md и docs/ARCHITECTURE.md.
Предпосылки
- Docker + Docker Compose.
- Доступ к Docker daemon.
Канонический сценарий (через Airflow)
- Поднять инфраструктуру:
make up
docker compose ps
- Инициализировать схему ClickHouse:
docker compose exec -T airflow-webserver airflow dags trigger ddl_init
- Загрузить данные в Kafka через DAG
kafka_load:
# Рекомендуется для демо: небольшой срез
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}'
- Запустить ETL:
docker compose exec -T airflow-webserver airflow dags trigger etl_pipeline \
--conf '{"full_refresh": true}'
- Проверить результат:
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нужно заново выполнить:ddl_initkafka_loadetl_pipeline
Связанные документы
- План ingest:
plans/kafka_ingest_plan.md - План DAG'ов:
plans/airflow_dags_plan.md - Архитектура:
docs/ARCHITECTURE.md