Files
clickstream-ch-kafka-supers…/README.md
T
ddadmin 4f8f992363 feat(generator): добавлены профили запуска
- Зачем:
  - запуск генератора должен быть понятным перед будущим DAG-пультом.
- Что:
  - добавлены глаголы запуска backfill, continue и reset.
  - добавлены профили ci и daily-wave с расчётом длительности истории.
  - обновлены runbook и документы запуска под профильный интерфейс.
- Проверка:
  - uv run --with-requirements generator/requirements.txt pytest generator/tests -q.
  - bash -n scripts/run_generator.sh scripts/export_startup_history_artifact.sh scripts/import_startup_history_artifact.sh scripts/run_generated_history_analytics.sh.
  - PROFILE=daily-wave COMPOSE_BIN=true bash scripts/run_generator.sh backfill.
2026-07-04 18:51:10 +03:00

6.5 KiB
Raw Blame History

Учебный стенд DWH кликстрима

Stack Layers

Живой стек для работы с кликстримом: Kafka, ClickHouse, Airflow, Superset и мониторинг (Prometheus с Grafana) поднимаются в Docker одной командой. На этом стенде можно учиться по курсу или просто поднять его у себя и поэкспериментировать с потоковой загрузкой и витринами.

Поток данных коротко:

  • стартовая история: generator backfill → Kafka → ClickHouse (STG) → batch STG → ODS → DDS → DM → Superset.
  • живое продолжение: generator live → Kafka → ClickHouse (STG) → batch ETL → Superset.

Файлы data/*.jsonl больше не основной источник аналитики. Пока они остаются архивной кладовкой значений для генератора: браузеры, страны, устройства и UTM.

Куда дальше

Быстрый старт

Штатный чистый запуск строит аналитику из стартовой истории генератора. Команда очищает volumes ClickHouse и Kafka, создаёт стартовую историю, доводит её до DM и проверяет Superset metadata.

make generated-history-analytics
docker compose ps

По умолчанию это быстрый профиль ci: 6 часов модельного времени. Историю на 2 суток с суточной волной можно прогнать одной командой:

PROFILE=daily-wave make generated-history-analytics

Разовую длительность можно задать без ручного расчёта правой границы:

GEN_HISTORY_DURATION=2d make generated-history-analytics

Повторить только техническую проверку после уже выполненного прогона:

make generated-history-check

Сохранить стартовую историю в файл и восстановить её без новой генерации можно по runbook стартовой истории.

Проверить, что данные дошли до витрин:

docker compose exec -T clickhouse clickhouse-client --user=default --password=123456 \
  --query "SELECT count() FROM dm.v_events_enriched"

Подробный сценарий запуска, параметры DAG-ов и разбор частых проблем — в OPERATIONS.

Сервисы и доступы

Сервис Адрес Назначение Логин/пароль
Airflow http://localhost:8080 оркестрация ETL admin/admin
ClickHouse http://localhost:9123/play SQL-запросы default/123456
Kafka UI http://localhost:8082 просмотр топиков
Superset http://localhost:8088 дашборды admin/admin
Prometheus http://localhost:9090 метрики
Grafana http://localhost:3000 графики метрик admin/admin

Готовый дашборд в Superset: http://localhost:8088/superset/dashboard/ecommerce-analytics/ — он создаётся во время make generated-history-analytics. Состав и настройка дашборда описаны в SUPERSET_DASHBOARD.

Как устроен поток данных

flowchart LR
    subgraph GEN["Generator"]
        BF["backfill"]
        LIVE["live"]
    end

    subgraph Kafka["Kafka"]
        Topics[4 топика]
    end

    subgraph CH["ClickHouse"]
        STG["STG: сырые данные"]
        ODS["ODS: типизация + DQ"]
        DDS["DDS: сущности"]
        DM["DM: витрины VIEW"]
    end

    BF -->|стартовая история| Kafka
    LIVE -->|продолжение| Kafka
    Kafka -->|Kafka MV| STG
    STG -->|batch| ODS -->|batch| DDS -->|VIEW| DM

    DDL["DDL"] -.-> CH

«Грязные» записи не роняют пайплайн: ошибки разбора складываются в ods.*_errors и в поле parse_errors, а обработка продолжается.

Подробное описание слоёв STG/ODS/DDS/DM, диаграммы и обоснование решений — в ARCHITECTURE.

Документация