С помощью этого руководства вы настроите взаимодействие сервисов Managed Trino, Managed Metastore и Object Storage. Вы создадите управляемые и внешние таблицы и проверите выполнение основных сценариев по добавлению данных и удалению таблиц.
Вы будете использовать следующие сервисы:
Managed Trino — сервис, который предоставляет массивно-параллельный аналитический SQL-движок для обработки больших объемов данных из разных источников.
Managed Metastore — сервис для хранения и управления метаданными из разных источников.
Object Storage — объектное S3-хранилище с бесплатным хранением файлов объемом до 15 ГБ.
Шаги:
Располагайте создаваемые сущности в одной VPC и используйте единые сетевые параметры.
Зарегистрируйтесь в личном кабинете Cloud.ru. Если вы уже зарегистрированы, войдите под своей учетной записью.
Перейдите в раздел Evolution.
Создайте публичный SNAT-шлюз, чтобы обеспечить инстансу доступ в интернет и связь с внешними источниками.
Создайте кластер Data Platform с названием dp-labs.
Скачайте и установите root-сертификат на устройство.
Создайте бакет Object Storage, в котором будут храниться данные.
Изучите раздел Управляемые и внешние таблицы.
На этом шаге вы создадите секреты для настройки доступа к Object Storage.
Перейдите в раздел Пользователи на вкладку Сервисные аккаунты.
Нажмите на название аккаунта, для которого необходимо сгенерировать ключ доступа. Если такого аккаунта нет, создайте его. Убедитесь, что у выбранного аккаунта есть роль с доступом к сервису Object Storage.
В блоке Учетные данные доступа откройте вкладку Ключи доступа.
Нажмите Создать ключ.
Введите краткое описание ключа.
Задайте время жизни ключа или выберите вариант Бессрочно. Бессрочные ключи менее безопасны. Рекомендуем выбирать ограничение по периоду действия или обновлять ключи самостоятельно не менее одного раза в год.
Нажмите Создать. Сервис сгенерирует Key ID (логин) и Key Secret (пароль). Скопируйте и сохраните эти значения. После того как вы закроете это окно, посмотреть их будет нельзя.
На верхней панели слева нажмите и выберите Хранение данных → Object Storage.
Скопируйте ID тенанта.
На верхней панели слева нажмите и выберите Управление → Secret Management.
Создайте access key:
Нажмите Добавить секрет.
В поле Путь введите dp-labs-access-key.
В блоке Значение секрета выберите Стандартый режим и введите значение в формате tenant_id:key_id, где:
tenant_id — скопированное ранее значение ID тенанта;
key_id — значение Key ID, скопированное и сохраненное ранее при создании ключа доступа.
Нажмите Создать.
Создайте secret key:
Нажмите Добавить секрет.
В поле Путь укажите dp-labs-secret-key.
В блоке Значение секрета выберите Стандартый режим и укажите значение Key Secret, скопированное и сохраненное ранее при создании ключа доступа.
Нажмите Создать.
На этом шаге вы создадите инстанс Managed Metastore.
Перейдите в Платформа данных → Managed Metastore.
Перейдите в раздел Hive Metastore.
Нажмите Создать инстанс.
В блоке Общие параметры заполните поля следующими значениями:
Название — metastore-lab.
Кластер — dp-labs.
В блоке Конфигурация выберите следующие значения параметров:
Версия — 0.1.8 (3.0).
Вычислительные ресурсы — 2 vCPU / 4 RAM.
В блоке Источник выберите следующие значения параметров:
Файловая система — S3.
Источник — Object Storage.
Путь до warehouse — созданный ранее бакет Object Storage.
Нажмите Продолжить.
В блоке Сетевые настройки выберите следующие значения параметров:
Зона доступности — зона доступности, для которой создан SNAT-шлюз.
Название подсети — подсеть с DNS-сервером.
Нажмите Создать.
Дождитесь, пока статус инстанса изменится на «Готов».
Откройте карточку инстанса. Информация из нее понадобится на следующих этапах.
На этом шаге вы подготовите каталог Managed Trino.
Перейдите в Платформа данных → Managed Trino.
Нажмите Создать и выберите Каталог.
В блоке Общие параметры в поле Название введите trino_lab.
В блоке Настройки каталога заполните поля следующими значениями:
Коннектор — metastore.
Thrift URL — значение Thrift URL из карточки инстанса metastore-lab.
Эндпоинт — https://s3.cloud.ru.
Идентификатор ключа доступа — dp-labs-access-key.
Секретный ключ доступа — dp-labs-secret-key.
Регион S3 — ru-central-1.
Нажмите Создать.
На этом шаге вы подготовите инстанс Managed Trino.
Перейдите в раздел Инстансы.
Нажмите Создать инстанс.
В блоке Общие параметры заполните поля следующими значениями:
Название — trino-lab-instance.
Кластер — dp-labs.
В блоке Конфигурация заполните поля следующими значениями:
Версия — 0.1.7.
Режим — Основной.
Вычислительные ресурсы — 4 vCPU 4 / RAM 16.
Количество нод — 3. Чтобы задать количество нод, отключите опцию Автомасштабирование.
В блоке Настройки каталога укажите созданный ранее каталог trino_lab.
Нажмите Продолжить.
В блоке Сетевые настройки заполните поля следующими значениями:
Зона доступности — зона доступности, для которой создан SNAT-шлюз.
Подсеть — подсеть с DNS-сервером, в которой расположен инстанс Managed Metastore.
Подключить публичный хост — активируйте опцию.
Пользователь — имя пользователя, например user1.
Пароль — dp-labs-access-key.
Нажмите Создать.
Дождитесь, пока статус инстанса Managed Trino изменится на «Готов».
На этом шаге вы с помощью JDBC-клиента DBeaver отправите SQL-запросы и создадите управляемую таблицу .orc. Вы отправите данные в таблицу, проверите результат и удалите таблицу.
В приложении DBeaver в панели сверху нажмите Редактор SQL → Новый редактор SQL.
Создайте схему:
CREATE SCHEMA IF NOT EXISTS trino_lab.my_company
В Object Storage будут создана папка со схемой my_company.db.
Создайте таблицу:
CREATE TABLE IF NOT EXISTS trino_lab.my_company.employees (id_employee INT, email VARCHAR(255))
Заполните таблицу:
INSERT INTO trino_lab.my_company.employees values (1, 'xxx@example.com'), (2, 'yyy@example.com'), (3, 'zzz@example.com')
В Object Storage появится файл в формате .orc.
Проверьте результат:
SELECT * FROM trino_lab.my_company.employees
Удалите таблицу:
DROP TABLE trino_lab.my_company.employees
В результате из Managed Metastore удалена таблица, а из Object Storage удалена папка employees и все данные.
На этом шаге вы с помощью JDBC-клиента DBeaver отправите SQL-запросы и создадите управляемую таблицу в текстовом формате. Вы отправите данные в таблицу, проверите результат и удалите таблицу.
Создайте схему:
CREATE SCHEMA IF NOT EXISTS trino_lab.my_company
В Object Storage будет создана папка со схемой my_company.db.
Создайте таблицу в текстовом формате:
CREATE TABLE IF NOT EXISTS trino_lab.my_company.employees_csv (id_employee INT, email VARCHAR(255))WITH (format = 'TEXTFILE')
Заполните таблицу:
INSERT INTO trino_lab.my_company.employees_csv values (1, 'xxx@example.com'), (2, 'yyy@example.com'), (3, 'zzz@example.com')
В Object Storage появится файл в формате .gz.
Проверьте результат:
SELECT * FROM trino_lab.my_company.employees_csv
Удалите таблицу:
DROP TABLE trino_lab.my_company.employees_csv
В результате из Managed Metastore будет удалена таблица, а из Object Storage — папка employees_csv и все данные.
На этом шаге вы загрузите файлы с данными в Object Storage. С помощью JDBC-клиента DBeaver отправите SQL-запросы и создадите внешнюю таблицу для управления этими данными. Вы проверите, как система обрабатывает данные из разных файлов.
Откройте бакет Object Storage.
Создайте папку с названием «data».
Подготовьте файл с данными в формате .csv:
колонки: id, email
значения в колонке id: 1, 2, 3
значения в колонке email: xxx@example.com, yyy@example.com, zzz@example.com
Загрузите файл в папку data в Object Storage.
В приложении DBeaver создайте схему:
CREATE SCHEMA IF NOT EXISTS trino_lab.my_company
Создайте таблицу:
CREATE TABLE IF NOT EXISTS trino_lab.my_company.csv_external (id VARCHAR, email VARCHAR)WITH (external_location = 's3a://<bucket-name>/data',format = 'CSV',csv_separator = ';',skip_header_line_count = 1)
В строке external_location = 's3a://<bucket-name>/data' вместо <bucket-name> подставьте название используемого бакета.
Проверьте результат:
SELECT * FROM trino_lab.my_company.csv_external
Подготовьте новый файл с данными в формате .csv:
колонки: id, email
значения в колонке id: 4, 5, 6
значения в колонке email: aaa@example.com, bbb@example.com, ccc@example.com
Добавьте файл в папку data в Object Storage. Это имитирует поступление новых данных из другой системы.
Проверьте результат.
SELECT * FROM trino_lab.my_company.csv_external
Система считывает данные из двух разных файлов с одинаковой структурой и с одинаковым разрешением, как если бы это был один файл.
Удалите таблицу.
DROP TABLE trino_lab.my_company.csv_external
В результате таблица будет удалена из Managed Metastore, но файлы в Object Storage останутся.
С помощью этого руководства вы настроили взаимодействие Managed Trino, Managed Metastore и Object Storage. Вы научились использовать JDBC-клиент DBeaver для отправки SQL-запросов и работать с управляемыми и внешними таблицами.