Files
clickstream-ch-kafka-supers…/plans/runbook.md
T
ddadmin eb80bc1870 feat(infra): add makefile and kafka data loading script
Add build automation via Makefile with targets for docker compose
management, DDL application, and data ingestion. Implement a robust bash
script for loading JSONL demo data into Kafka topics with configurable
options for limits, full dataset loading, and topic reset behavior.
2026-02-05 22:10:48 +03:00

84 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Runbook: запуск демо и загрузка данных
Этот документ фиксирует порядок действий и `make`‑таргеты. Он не описывает внутренности ClickHouse‑слоёв (это в `plans/clickhouse_ddl.md`).
## Предпосылки
- Docker + Docker Compose.
- Доступ к Docker daemon (если `docker compose ...` пишет `permission denied ... /var/run/docker.sock`, добавьте пользователя в группу `docker` или запускайте команды с правами, принятыми в вашей среде).
## Быстрый сценарий
1) Поднять инфраструктуру:
```bash
make up
```
2) (Опционально) Залить данные в Kafka:
```bash
make data
```
`make data` не зависит от ClickHouse/DDL — достаточно, чтобы Kafka была поднята.
3) Применить DDL в ClickHouse:
```bash
make ddl
```
## Make таргеты
- `make up``docker compose up -d` (поднимает весь стек из `docker-compose.yml`).
- `make ddl` — применяет SQL из `plans/clickhouse_ddl.md` в контейнер ClickHouse (извлекает все блоки ```sql``` и исполняет их через `clickhouse-client`).
- `make data` — пересоздаёт топики (по умолчанию) и публикует события из `data/*.jsonl` в Kafka (1 строка = 1 Kafka message value).
План реализации механики заливки (дизайн/решения): `plans/kafka_ingest_plan.md`.
## Загрузка данных в Kafka (`make data`)
### Топики
Скрипт использует фиксированный маппинг:
- `data/browser_events.jsonl``browser_events`
- `data/location_events.jsonl``location_events`
- `data/device_events.jsonl``device_events`
- `data/geo_events.jsonl``geo_events`
### Режимы загрузки
- По умолчанию — “debug срез”: первые 50 строк каждого файла.
- Полная загрузка — весь файл.
Параметры (env):
- `LIMIT` — сколько строк брать из каждого `.jsonl` (по умолчанию `50`). `LIMIT=0` трактуется как “весь файл”.
- `FULL` — если `FULL=1`, грузит весь файл независимо от `LIMIT`.
- `RESET_TOPICS` — если `RESET_TOPICS=1` (по умолчанию), топики удаляются и создаются заново с теми же именами.
- `BOOTSTRAP_SERVER` — bootstrap для Kafka *изнутри kafka‑контейнера* (по умолчанию `kafka:29092`).
Примеры:
```bash
# 100 строк на поток
LIMIT=100 make data
# Полная заливка всех строк
FULL=1 make data
# Дозалить данные без пересоздания топиков
RESET_TOPICS=0 make data
```
## Применение DDL в ClickHouse (`make ddl`)
Скрипт исполняет SQL из `plans/clickhouse_ddl.md`. Для `ENGINE = Kafka` важно, чтобы `kafka_broker_list` был доступен из контейнера ClickHouse.
В текущем compose:
- для соединений “контейнер → Kafka” используйте `kafka:29092`;
- `localhost:9092` подходит только для клиентов на хосте.