Еще работа над документаций

This commit is contained in:
2026-01-08 15:44:41 +03:00
parent f0a7a05b2e
commit da252a5974
+58 -6
View File
@@ -1,11 +1,17 @@
> **Последнее обновление:** 2026-01-08 | **Версия NiFi:** 1.x.x
> **Последнее обновление:** 2026-01-08 | **Версии:** NiFi 1.27.0 / Kafka 3.8.0 / Postgres 16.4
Учебный стенд для знакомства с Apache NiFi и Kafka: NiFi + NiFi Registry + Postgres + Kafka + Kafka UI.
## Содержание
<details>
<summary>Показать/скрыть</summary>
- [Содержание](#содержание)
- [Требования](#требования)
- [Быстрый старт](#быстрый-старт)
- [Сценарий первого запуска (5-10 минут)](#сценарий-первого-запуска-5-10-минут)
- [Команды управления](#команды-управления)
- [Что сохраняется между перезапусками](#что-сохраняется-между-перезапусками)
- [Адреса и доступы](#адреса-и-доступы)
- [Важно про адреса (внутри Docker и с хоста)](#важно-про-адреса-внутри-docker-и-с-хоста)
@@ -30,7 +36,47 @@
- [Проблемы с правами доступа](#проблемы-с-правами-доступа)
- [Дополнительная диагностика](#дополнительная-диагностика)
</details>
## Требования
- Docker Engine / Docker Desktop с поддержкой `docker compose` (Compose v2).
- Свободные порты на машине: `18443`, `18080`, `5437`, `9092`, `8082`.
- Ресурсы (примерно): 2 CPU, 68 GB RAM.
## Быстрый старт
Если вы запускаете стенд впервые — пройдите сценарий ниже. Если нужно просто запустить/остановить/сбросить — используйте шпаргалку в “Команды управления”.
Все команды `docker compose ...` запускайте в терминале ОС на хосте из корня репозитория (рядом с `docker-compose.yml`).
### Сценарий первого запуска (5-10 минут)
1) Поднимите стенд:
```sh
docker compose up -d
docker compose ps
```
2) Дождитесь запуска NiFi (может занять 1–3 минуты), затем откройте:
- NiFi: http://localhost:18443/nifi/
- Kafka UI: http://localhost:8082/
3) Инициализируйте демо-схемы/таблицы в Postgres (требуется один раз после первого старта или после `docker compose down -v`):
```sh
docker compose exec -T postgres psql -U postgres -d app -f /nifi-templates/SampleKafka2Postgres.sql
```
4) Импортируйте flow в NiFi из файлов:
- `nifi-templates/Sample2Kafka.json`
- `nifi-templates/SampleKafka2Postgres.json`
Подробный гайд: `MENTEE_GUIDE_JSON_FLOWS.md`.
5) Внутри каждого process group:
- включите Controller Services;
- запустите процессоры.
6) Проверьте результат:
- в Kafka UI в topic `Sample2Kafka` появляются сообщения;
- в Postgres растёт число строк:
```sh
docker compose exec -it postgres bash -c "export PGPASSWORD=postgres; psql -U postgres -d app -c 'SELECT COUNT(*) FROM ods.samplekafka2postgres;'"
```
### Команды управления
```sh
docker compose up -d
docker compose ps
@@ -59,6 +105,7 @@ docker compose up -d
```sh
docker compose down -v
```
После `docker compose down -v` потребуется заново выполнить SQL-инициализацию и импортировать flow (см. сценарий выше).
### Что сохраняется между перезапусками
- `docker compose stop/start` — сохраняется всё (контейнеры не удаляются).
@@ -69,7 +116,7 @@ docker compose down -v
## Адреса и доступы
- NiFi: http://localhost:18443/nifi/
> 💡 **Примечание:** В текущей конфигурации аутентификация отключена для упрощения обучения. Логин и пароль не требуются.
> 💡 **Примечание:** В текущей конфигурации NiFi доступен по HTTP, логин не требуется. Если вы включите HTTPS/аутентификацию, креды заданы в `docker-compose.yml` (`admin` / `Password123456`).
- NiFi docs: https://nifi.apache.org/documentation/
- Registry: http://localhost:18080/nifi-registry
- Registry docs: https://nifi.apache.org/docs/nifi-registry-docs/
@@ -80,6 +127,8 @@ docker compose down -v
> ⚠️ **Критически важно:** Если вы настраиваете подключение *в NiFi*, то `localhost` почти всегда будет неправильным (NiFi живёт в контейнере).
Почему так: внутри контейнера `localhost` — это сам контейнер. Контейнеры из одного `docker compose` видят друг друга по именам сервисов (Docker DNS), поэтому `postgres`, `kafka`, `registry` работают как “хосты”.
Используйте имена сервисов из `docker-compose.yml`:
- Postgres (из NiFi): `jdbc:postgresql://postgres:5432/app`
- Kafka (из NiFi): `kafka:29092`
@@ -139,10 +188,12 @@ select * from ods.samplekafka2postgres order by id desc limit 10;
> ⚠️ **Важно:** В Apache Kafka 3.8.0 скрипты находятся в `/opt/kafka/bin/`, поэтому нужно указывать полный путь.
Команды ниже выполняются внутри контейнера Kafka (через `docker compose exec ...`). Если вы запускаете Kafka CLI на хосте — используйте `--bootstrap-server localhost:9092`.
**Чтение сообщений:**
```sh
docker compose exec kafka /opt/kafka/bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--bootstrap-server kafka:29092 \
--topic Sample2Kafka \
--from-beginning
```
@@ -152,7 +203,7 @@ docker compose exec kafka /opt/kafka/bin/kafka-console-consumer.sh \
**Интерактивный режим** (ввод сообщений вручную):
```sh
docker compose exec kafka /opt/kafka/bin/kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--bootstrap-server kafka:29092 \
--topic Sample2Kafka
```
После запуска введите сообщение и нажмите Enter. Нажмите `Ctrl+C` для выхода.
@@ -161,7 +212,7 @@ docker compose exec kafka /opt/kafka/bin/kafka-console-producer.sh \
```sh
echo '{"dttm": 1704698992000, "txt": "Тестовое сообщение"}' | \
docker compose exec -T kafka /opt/kafka/bin/kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--bootstrap-server kafka:29092 \
--topic Sample2Kafka
```
> 💡 **Примечание:** Флаг `-T` отключает TTY, что позволяет использовать pipe.
@@ -169,7 +220,7 @@ echo '{"dttm": 1704698992000, "txt": "Тестовое сообщение"}' | \
**Просмотр списка топиков:**
```sh
docker compose exec kafka /opt/kafka/bin/kafka-topics.sh \
--bootstrap-server localhost:9092 \
--bootstrap-server kafka:29092 \
--list
```
@@ -311,3 +362,4 @@ docker compose exec postgres bash
2. Перезапустите проблемный контейнер: `docker compose restart nifi` (или другой сервис)
3. Попробуйте полный сброс: `docker compose down -v && docker compose up -d`
> ⚠️ **Внимание:** Это удалит все данные из Postgres, NiFi и Registry.
После этого потребуется заново выполнить `/nifi-templates/SampleKafka2Postgres.sql` и импортировать flow.