Автонастройка kafka-ui
This commit is contained in:
@@ -22,3 +22,4 @@ KAFKA_TOPIC=orders
|
|||||||
KAFKA_BATCH_SIZE=500
|
KAFKA_BATCH_SIZE=500
|
||||||
KAFKA_POLL_TIMEOUT=10
|
KAFKA_POLL_TIMEOUT=10
|
||||||
KAFKA_MAX_EMPTY_POLLS=3
|
KAFKA_MAX_EMPTY_POLLS=3
|
||||||
|
KAFKA_UI_CLUSTER_NAME=KafkaCluster
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ Airflow по‑прежнему использует **Postgres** только
|
|||||||
- **Airflow (2.9)** — оркестрация пайплайна, metadata в Postgres.
|
- **Airflow (2.9)** — оркестрация пайплайна, metadata в Postgres.
|
||||||
- **DAG** `kafka_to_greenplum.py` — генерирует данные → пишет в Kafka → читает и грузит в Greenplum.
|
- **DAG** `kafka_to_greenplum.py` — генерирует данные → пишет в Kafka → читает и грузит в Greenplum.
|
||||||
- **DAG** `greenplum_data_quality.py` — выполняет проверки качества данных (наличие таблицы, схема, заполненность, дубли).
|
- **DAG** `greenplum_data_quality.py` — выполняет проверки качества данных (наличие таблицы, схема, заполненность, дубли).
|
||||||
|
- **Kafka UI** — автоматически подключается к стендовому брокеру (bootstrap берётся из `KAFKA_BOOTSTRAP` или значения по умолчанию).
|
||||||
- **DDL** `sql/ddl_gp.sql` — создаёт колонночную таблицу `orders` без PRIMARY KEY (AO-таблицы GP6 не поддерживают его), распределённую по `order_id`; контроль дублей реализован в DAG.
|
- **DDL** `sql/ddl_gp.sql` — создаёт колонночную таблицу `orders` без PRIMARY KEY (AO-таблицы GP6 не поддерживают его), распределённую по `order_id`; контроль дублей реализован в DAG.
|
||||||
|
|
||||||
> Примечание по версиям и надёжности: используется образ `woblerr/greenplum:6.27.1` с поддержкой переменных окружения и fallback значениями. Для продакшен‑подобных тестов зафиксируй digest (SHA256) конкретного тега на Docker Hub.
|
> Примечание по версиям и надёжности: используется образ `woblerr/greenplum:6.27.1` с поддержкой переменных окружения и fallback значениями. Для продакшен‑подобных тестов зафиксируй digest (SHA256) конкретного тега на Docker Hub.
|
||||||
@@ -73,7 +74,7 @@ airflow connections add 'greenplum_conn' \
|
|||||||
|
|
||||||
### Интерфейсы и порты
|
### Интерфейсы и порты
|
||||||
- Airflow UI: http://localhost:8080 (admin/admin по умолчанию)
|
- Airflow UI: http://localhost:8080 (admin/admin по умолчанию)
|
||||||
- Kafka UI: http://localhost:8082 (просмотр топиков/сообщений)
|
- Kafka UI: http://localhost:8082 (просмотр топиков/сообщений; подключение к кластеру создаётся автоматически)
|
||||||
- Greenplum: `localhost:${GP_PORT:-5432}` (внешний порт проброшен из контейнера)
|
- Greenplum: `localhost:${GP_PORT:-5432}` (внешний порт проброшен из контейнера)
|
||||||
- Postgres (Airflow metadata): `localhost:5433`
|
- Postgres (Airflow metadata): `localhost:5433`
|
||||||
- Kafka (для клиентов на хосте): `localhost:9092`
|
- Kafka (для клиентов на хосте): `localhost:9092`
|
||||||
@@ -122,6 +123,13 @@ SELECT count(*) FROM public.orders;
|
|||||||
- `GP_CONN_ID` — ID Airflow Connection (по умолчанию: `greenplum_conn`)
|
- `GP_CONN_ID` — ID Airflow Connection (по умолчанию: `greenplum_conn`)
|
||||||
- `GP_USE_AIRFLOW_CONN` — использовать ли Airflow Connection (`true`/`false`). Если `false`, DAG подключается к БД напрямую по ENV.
|
- `GP_USE_AIRFLOW_CONN` — использовать ли Airflow Connection (`true`/`false`). Если `false`, DAG подключается к БД напрямую по ENV.
|
||||||
|
|
||||||
|
Настройки Kafka берутся из тех же переменных окружения:
|
||||||
|
|
||||||
|
- `KAFKA_BOOTSTRAP` — bootstrap-адрес брокера для Airflow и Kafka UI (по умолчанию `kafka:29092`).
|
||||||
|
- `KAFKA_TOPIC` — имя демо-топика (по умолчанию `orders`).
|
||||||
|
- `KAFKA_BATCH_SIZE`, `KAFKA_POLL_TIMEOUT`, `KAFKA_MAX_EMPTY_POLLS` — параметры чтения/загрузки (см. раздел выше).
|
||||||
|
- `KAFKA_UI_CLUSTER_NAME` — отображаемое имя кластера в Kafka UI (по умолчанию `KafkaCluster`).
|
||||||
|
|
||||||
Образ `woblerr/greenplum:6.27.1` использует переменные:
|
Образ `woblerr/greenplum:6.27.1` использует переменные:
|
||||||
- `GREENPLUM_USER` (маппится на `GP_USER`)
|
- `GREENPLUM_USER` (маппится на `GP_USER`)
|
||||||
- `GREENPLUM_PASSWORD` (маппится на `GP_PASSWORD`)
|
- `GREENPLUM_PASSWORD` (маппится на `GP_PASSWORD`)
|
||||||
|
|||||||
@@ -64,12 +64,13 @@ services:
|
|||||||
|
|
||||||
kafka-ui:
|
kafka-ui:
|
||||||
image: provectuslabs/kafka-ui:v0.7.2
|
image: provectuslabs/kafka-ui:v0.7.2
|
||||||
|
env_file: .env
|
||||||
ports:
|
ports:
|
||||||
- 8082:8080
|
- 8082:8080
|
||||||
environment:
|
environment:
|
||||||
- DYNAMIC_CONFIG_ENABLED=true
|
DYNAMIC_CONFIG_ENABLED: "true"
|
||||||
- KAFKA_CLUSTERS_0_NAME=KafkaCluster
|
KAFKA_CLUSTERS_0_NAME: ${KAFKA_UI_CLUSTER_NAME:-KafkaCluster}
|
||||||
- KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:29092
|
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: ${KAFKA_BOOTSTRAP:-kafka:29092}
|
||||||
volumes:
|
volumes:
|
||||||
- kafka-ui-data:/app/data
|
- kafka-ui-data:/app/data
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|||||||
Reference in New Issue
Block a user