Разделение хранения и вычислений
В системах, которые разделяют хранение и вычисления, данные хранятся в недорогих надежных удаленных системах хранения, таких как Amazon S3, Google Cloud Storage, Azure Blob Storage и других S3-совместимых хранилищах, таких как MinIO. Горячие данные кэшируются локально, и когда кэш попадает в цель, производительность запросов сопоставима с архитектурой связанного хранения и вычислений. Вычислительные узлы (CN) могут быть добавлены или удалены по требованию в течение секунд. Эта архитектура снижает стоимость хранения, обеспечивает лучшую изоляцию ресурсов и предоставляет эластичность и масштабируемость.
Этот учебник охватывает:
- Запуск Selena в Docker контейнерах
- Использование MinIO для объектного хранения
- Настройка Selena для shared-data
- Загрузка двух публичных наборов данных
- Анализ данных с помощью SELECT и JOIN
- Базовое преобразование данных (T в ETL)
Используемые данные предоставлены NYC OpenData и Национальными центрами экологической информации NOAA.
Оба этих набора данных очень большие, и поскольку этот учебник предназначен для того, чтобы помочь вам познакомиться с работой с Selena, мы не будем загружать данные за последние 120 лет. Вы можете запустить Docker образ и загрузить эти данные на машине с 4 ГБ оперативной памяти, выделенной для Docker. Для более крупных отказоустойчивых и масштабируемых развертываний у нас есть другая документация, которую мы предоставим позже.
В этом документе много информации, и он а представлена с пошаговым содержанием в начале и техническими деталями в конце. Это сделано для достижения следующих целей в данном порядке:
- Позволить читателю загрузить данные в shared-data развертывание и проанализировать эти данные.
- Предоставить детали конфигурации для shared-data развертываний.
- Объяснить основы преобразования данных во время загрузки.
Предварительные требования
Docker
- Docker
- 4 ГБ оперативной памяти, выделенной для Docker
- 10 ГБ свободного дискового пространства, выделенного для Docker
SQL клиент
Вы можете использовать SQL клиент, предоставленный в Docker окружении, или использовать клиент в вашей системе. Многие MySQL совместимые клиенты будут работать, и это руководство охватывает конфигурацию DBeaver и MySQL Workbench.
curl
curl используется для отправки задания загрузки данных в Selena и для скачивания наборов данных. Проверьте, установлен ли он, выполнив curl или curl.exe в командной строке вашей ОС. Если curl не установлен, получите curl здесь.
/etc/hosts
Метод загрузки, используемый в этом руководстве, - Stream Load. Stream Load подключается к сервису FE для запуска задания загрузки. FE затем назначает задание узлу backend, CN в этом руководстве. Чтобы задание загрузки могло подключиться к CN, имя CN должно быть доступно вашей операционной системе. Добавьте эту строку в /etc/hosts:
127.0.0.1 starrocks-cn
Терминология
FE
Frontend узлы отвечают за управление метаданными, управление подключениями клиентов, планирование запросов и планирование выполнения запросов. Каждый FE хранит и поддерживает полную копию метаданных в своей памяти, что гарантирует беспристрастные сервисы среди FE.
CN
Compute Nodes отвечают за выполнение планов запросов в shared-data развертываниях.
BE
Backend узлы отвечают как за хранение данных, так и за выполнение планов запросов в shared-nothing развертываниях.
Это руководство не использует BE, эта информация включена здесь, чтобы вы понимали разницу между BE и CN.
Скачивание файлов лаборатории
Есть три файла для скачивания:
- Файл Docker Compose, который развертывает окружение Selena и MinIO
- Данные о авариях в Нью-Йорке
- Данные о погоде
Это руководство использует MinIO, который является S3-совместимым объектным хранилищем, предоставляемым под лицензией GNU Affero General Public License.
Создайте директорию для хранения файлов лаборатории:
mkdir quickstart
cd quickstart
Скачайте файл Docker Compose
curl -O https://raw.githubusercontent.com/StarRocks/demo/master/documentation-samples/quickstart/docker-compose.yml
Скачайте данные
Скачайте эти два набора данных:
Данные о авариях в Нью-Йорке
curl -O https://raw.githubusercontent.com/StarRocks/demo/master/documentation-samples/quickstart/datasets/NYPD_Crash_Data.csv
Данные о погоде
curl -O https://raw.githubusercontent.com/StarRocks/demo/master/documentation-samples/quickstart/datasets/72505394728.csv
Развертывание Selena и MinIO
docker compose up --detach --wait --wait-timeout 120
Запуск сервисов FE, CN и MinIO должен занять около 30 секунд, чтобы стать здоровыми. Контейнер quickstart-minio_mc-1 покажет статус Waiting и также код выхода. Код выхода 0 указывает на успех.
[+] Running 4/5
✔ Network quickstart_default Created 0.0s
✔ Container minio Healthy 6.8s
✔ Container starrocks-fe Healthy 29.3s
⠼ Container quickstart-minio_mc-1 Waiting 29.3s
✔ Container starrocks-cn Healthy 29.2s
container quickstart-minio_mc-1 exited (0)
Проверка учетных данных MinIO
Чтобы использовать MinIO для объектного хранения с Selena, Selena нужен ключ доступа MinIO. Ключ доступа был сгенерирован во время запуска сервисов Docker. Чтобы помочь вам лучше понять способ подключения Selena к MinIO, вы должны проверить, что ключ существует.
Откройте веб-интерфейс MinIO
Перейдите по адресу http://localhost:9001/access-keys Имя пользователя и пароль указаны в файле Docker compose и являются miniouser и miniopassword. Вы должны увидеть, что есть один ключ доступа. Ключ - AAAAAAAAAAAAAAAAAAAA, вы не можете увидеть секрет в консоли MinIO, но он находится в файле Docker compose и является BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB:

Если в веб-интерфейсе MinIO не отображаются ключи доступа, проверьте логи сервиса minio_mc:
docker compose logs minio_mc
Попробуйте перезапустить pod minio_mc:
docker compose run minio_mc
SQL клиенты
Эти три клиента протестированы с данным руководством, вам нужен только один:
- mysql CLI: Вы можете запустить его из среды Docker или с вашей машины.
- DBeaver доступен в виде community версии и Pro версии.
- MySQL Workbench