Kafka routine load Selena с использованием shared-data хранилища
О Routine Load
Routine load — это метод использования Apache Kafka или, в данной лабораторной работе, Redpanda для непрерывной потоковой передачи данных в Selena. Данные п ередаются в топик Kafka, а задание Routine Load потребляет данные в Selena. Более подробная информация о Routine Load представлена в конце лабораторной работы.
О shared-data
В системах, которые разделяют хранилище и вычисления, данные хранятся в недорогих надежных удаленных системах хранения, таких как Amazon S3, Google Cloud Storage, Azure Blob Storage и других S3-совместимых хранилищах, таких как MinIO. Горячие данные кэшируются локально, и когда кэш попадает в цель, производительность запросов сопоставима с архитектурой связанного хранилища и вычислений. Вычислительные узлы (CN) могут быть добавлены или удалены по требованию в течение секунд. Эта архитектура снижает затраты на хранение, обеспечивает лучшую изоляцию ресурсов и предоставляет эластичность и масштабируемость.
Этот учебник охватывает:
- Запуск Selena, Redpanda и MinIO с Docker Compose
- Использование MinIO в качестве уровня хранения Selena
- Настройка Selena для shared-data
- Добавление задания Routine Load для потребления данных из Redpanda
Используемые данные являются синтетическими.
В этом документе много информации, и она представлена с пошаговым содержанием в начале и техническими деталями в конце. Это сделано для достижения следующих целей в данном порядке:
- Настроить Routine Load.
- Позволить читателю загружать данные в развертывание shared-data и анализировать эти данные.
- Предоставить детали конфигурации для развертываний shared-data.
Предварительные требования
Docker
- Docker
- 4 ГБ ОЗУ, выделенных для Docker
- 10 ГБ свободного дискового пространства, выделенного для Docker
SQL клиент
Вы можете использовать SQL клиент, предоставленный в среде Docker, или использовать клиент в вашей системе. Многие MySQL-совместимые клиенты будут работать, и это руководство охватывает конфигурацию DBeaver и MySQL Workbench.
curl
curl используется для загрузки файла Compose и скрипта для генерации данных. Проверьте, установлен ли он, запустив curl или curl.exe в командной строке вашей ОС. Если curl не установлен, получите curl здесь.
Python
Требуются Python 3 и Python клиент для Apache Kafka, kafka-python.
Терминология
FE
Frontend узлы отвечают за управление метаданными, управление подключениями клиентов, планирование запросов и планирование запросов. Каждый FE хранит и поддерживает полную копию метаданных в своей памяти, что гарантирует беспристрастные услуги среди FE.
CN
Compute Nodes отвечают за выполнение планов запросов в развертываниях shared-data.
BE
Backend узлы отвечают как за хранение данных, так и за выполнение планов запросов в развертываниях shared-nothing.
Это руководство не использует BE, эта информация включена здесь, чтобы вы понимали разницу между BE и CN.
Запуск Selena
Для запуска Selena с shared-data с использованием Object Storage вам нужно:
- Frontend движок (FE)
- Вычислительный узел (CN)
- Object Storage
Это руководство использует MinIO, который является S3-совместимым провайдером Object Storage. MinIO предоставляется под лицензией GNU Affero General Public License.
Загрузка файлов лабораторной работы
docker-compose.yml
mkdir routineload
cd routineload
curl -O https://raw.githubusercontent.com/StarRocks/demo/master/documentation-samples/routine-load-shared-data/docker-compose.yml
gen.py
gen.py — это скрипт, который использует Python клиент для Apache Kafka для публикации (производства) данных в топик Kafka. Скрипт был написан с адресом и портом контейнера Redpanda.
curl -O https://raw.githubusercontent.com/StarRocks/demo/master/documentation-samples/routine-load-shared-data/gen.py
Запуск Selena, MinIO и Redpanda
docker compose up --detach --wait --wait-timeout 120
Проверьте прогресс сервисов. Контейнерам потребуется 30 секунд или больше, чтобы стать здоровыми. Контейнер routineload-minio_mc-1 не будет показывать индикатор здоровья и завершится после настройки MinIO с ключом доступа, который будет использовать Selena. Дождитесь, пока routineload-minio_mc-1 завершится с кодом 0, а остальные сервисы станут Healthy.
За пускайте docker compose ps до тех пор, пока сервисы не станут здоровыми:
docker compose ps
WARN[0000] /Users/droscign/routineload/docker-compose.yml: `version` is obsolete
[+] Running 6/7
✔ Network routineload_default Crea... 0.0s
✔ Container minio Healthy 5.6s
✔ Container redpanda Healthy 3.6s
✔ Container redpanda-console Healt... 1.1s
⠧ Container routineload-minio_mc-1 Waiting 23.1s
✔ Container starrocks-fe Healthy 11.1s
✔ Container starrocks-cn Healthy 23.0s
container routineload-minio_mc-1 exited (0)
Изучение учетных данных MinIO
Чтобы использовать MinIO для Object Storage с Selena, Selena нужен ключ доступа MinIO. Ключ доступа был сгенерирован во время запуска сервисов Docker. Чтобы лучше понять, как Selena подключается к MinIO, вы должны убедиться, что ключ существует.
Откройте веб-интерфейс MinIO
Перейдите по адресу http://localhost:9001/access-keys. Имя пользователя и пароль указаны в файле Docker compose и являются miniouser и miniopassword. Вы должны увидеть, что есть один ключ доступа. Ключ — AAAAAAAAAAAAAAAAAAAA, вы не можете увидеть секрет в консоли MinIO, но он находится в файле Docker compose и является BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB:

SQL клиенты
Эти три клиента протестированы с данным руководством, вам нужен только один:
- mysql CLI: Вы можете запустить его из среды Docker или с вашей машины.
- DBeaver доступен в виде community версии и Pro версии.
- MySQL Workbench
Настройка клиента
- mysql CLI
- DBeaver
- MySQL Workbench
Самый простой способ использовать mysql CLI — запустить его из контейнера Selena starrocks-fe:
docker compose exec starrocks-fe \
mysql -P 9030 -h 127.0.0.1 -u root --prompt="StarRocks > "
Все команды docker compose должны выполняться из директории, содержащей файл docker-compose.yml.
Если вы хотите установить mysql CLI, разверните установка mysql клиента ниже:
установка mysql клиента
- macOS: Если вы используете Homebrew и не нуждаетесь в MySQL Server, выполните
brew install mysqlдля установки CLI. - Linux: Проверьте вашу систему репозиториев для клиента
mysql. Например,yum install mariadb. - Microsoft Windows: Установите MySQL Community Server и запустите предоставленный клиент, или запустите
mysqlиз WSL.
- Установи те DBeaver и добавьте соединение:

- Настройте порт, IP и имя пользователя. Протестируйте соединение и нажмите Finish, если тест прошел успешно:

- Установите MySQL Workbench и добавьте соединение.
- Настройте порт, IP и имя пользователя, затем протестируйте соединение:

- Вы увидите предупреждения от Workbench, поскольку он проверяет конкретную версию MySQL. Вы можете игнорировать предупреждения, и когда появится запрос, вы можете настроить Workbench, чтобы он перестал отображать предупреждения:
