gitverse new year логотип

kafka-spark-demo

Форк
1

10 месяцев назад
9 месяцев назад
10 месяцев назад
10 месяцев назад
10 месяцев назад
10 месяцев назад
9 месяцев назад
README.md

Как запустить воркшоп

  1. git clone https://gitverse.ru/sc/dtirskikh/kafka-spark-demo.git
  2. cd kafka-spark-demo
  3. В файл akhq/app/application.yml ввести пароль от Кафки Yandex Practicum (есть в спринте 8)
  4. docker-compose build
  5. docker-compose up

img.png

NIFI

https://localhost:18443/nifi
При обращении к адресу проигнорировать ошибку сертификата. Потом отказаться от применения локальных сертификатов.

Для NiFi в docker-compose.yml пробрасывается volume.

volumes: - ./nifi/conf:/opt/nifi/nifi-current/conf

Проброс позволяет использовать ранее подготовленные пайплайны и сгенерированные креды.

Username 8e55070e-822d-4ec3-a1ba-e082f296a4ac Password S3NQ4mar9GgOboq912GX2Nq2KpjBnKcb

Но такой подход не всегда работает и NiFi может не запускаться. В случае проблемы необходимо закомментировать проброс в docker-compose.yml

#volumes: # - ./nifi/conf:/opt/nifi/nifi-current/conf

Данная конфигурация не включает никаких пайплайнов. Креды генерируются при создании контейнера и находятся в логах.
Быстрый поиск кредов осуществляется командой:

docker logs nifi_dev 2>&1 | grep "Generated Username\|Generated Password" Generated Username [b121c36d-e817-434c-ad02-90b6418020a2] Generated Password [t3nKJ3f2DH8OO97uGSYi2mGCpybIlW6+]

AKHQ

http://127.0.0.1:8081
В файл akhq/app/application.yml ввести пароль от Кафки Yandex Practicum (есть в спринте 8)

Jupyter

http://127.0.0.1:8888/

Необходимо в логах контейнера найти ссылку с токеном

docker logs pyspark 2>&1 | grep "?token"

Ссылка будет примерно такой, только с другим токеном
http://127.0.0.1:8888/lab?token=e4b7a12929435fbe981ffaf422eadef31f0cbf567ba62cd1

Kafka local

Создать топик с помощью утилиты kafka-topics через контейнер kafka

docker exec -it kafka /bin/bash kafka-topics --bootstrap-server localhost:9092 \ --topic yap-topic-parts --create --if-not-exists \ --partitions 4

Запустить producer c хоста (консоль вне докера).

-K:
значаит будет ключ, а через двоеточие само сообщение. Например,
1:{"a": 1}

kcat -b localhost:29092 -t yap-topic-parts -P -K:

Запустить consumer

-K " "
значит выводить ключ сообщения через пробел

kcat -b localhost:29092 -t yap-topic-parts -C -K " "

Также можно добавить форматирование вывода сообщений:"

-f 'Key: %k\nValue: %s\n'
.
Описание
https://docs.confluent.io/platform/current/clients/examples/kcat.html
https://docs.confluent.io/platform/current/tools/kafkacat-usage.html
https://www.conduktor.io/blog/understanding-kafkas-internal-storage-and-log-retention/

--

С контейнера адрес брокера будет

kafka:9092
.
Например, можно использовать контейнер pyspark

docker exec -it pyspark /bin/bash

И в нём уже запускать продюсера

kafkacat -b kafka:9092 -t yap-topic-parts -P -K:

Или консъюмера

kafkacat -b kafka:9092 -t yap-topic-parts -C

Также можно явно писать в конкретную партцию

-p <num_prt>

kcat == kafkacat. Эта одна и та же утилита


Физические файлы можно посмотреть внутри контейнера Kafka

docker exec -it kafka /bin/bash ls /var/lib/kafka/data/

Расшифровать файлы .log | .index | .timeindex | ...

.log
- файл с данными
.index
- маппинг офсета сообщения в байтоовое смещение в партиции
.index
- маппинг timestamp сообщения в байтовое смещение в партиции

index.interval.bytes
- настройка обновления индексных файлов. По умолчанию, 4096 байт

kafka-run-class kafka.tools.DumpLogSegments --deep-iteration --print-data-log --files /path/to/file

Настройки

docker exec -it kafka /bin/bash ls /etc/kafka

Postgres

При инициализации запускается скрипт

postgres/docker-entrypoint-initdb.d/migration.sql

Подготавливаются тестовая схема
Есть 2 пользователя

user: postgres, password: example user: ya_practicum, password: ya_practicum

Описание

YAP

Языки

Jupyter Notebook

  • Dockerfile
Сообщить о нарушении

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.