В лабораторной работе мы рассмотрим:
сценарий взаимодействия между Managed Trino, Managed Metastore и Object Storage;
отправку запросов через DBeaver;
работу с управляемыми таблицами;
работу с внешними таблицами.
Все сущности должны располагаться в одной VPC и подсетях одного типа.
Перед началом работы
-
Если вы уже зарегистрированы, войдите под своей учетной записью.
Ознакомьтесь с разделом Управляемые и внешние таблицы. В следующих блоках вам будут встречаться термины «Управляемые таблицы» и «Внешние таблицы».
(Опционально) Cоздайте публичный SNAT-шлюз, если необходим доступ в интернет.
Создайте бакет Object Storage, в котором будут храниться таблицы и схемы.
Создайте кластер Data Platform, в котором будет размещен инстанс.
Назовите кластер dp-labs.
Скачайте и установите root-сертификат на устройство.
Установите JDBC-клиент DBeaver.
Создайте ключи для доступа к 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, скопированное и сохраненное ранее при создании ключа доступа.
Нажмите Создать.
В результате в списке появятся два новых секрета: dp-labs-access-key и dp-labs-secret-key.
Создайте инстанс Managed Metastore
Перейдите в раздел Evolution и выберите сервис Managed Metastore.
Нажмите Создать инстанс.
В блоке Общие параметры заполните поля следующими значениями:
Название — metastore-lab.
Кластер — dp-labs.
Лог-группа — группа логов.
Файловая система — S3.
Источник — выберите Cloud S3.
Бакет — созданный бакет Object Storage.
Нажмите Продолжить.
В блоке Сетевые настройки выберите:
Зона доступности — зону доступности, для которой создан SNAT-шлюз.
Подсеть — подсеть с DNS-сервером.
Нажмите Создать.
Дождитесь, когда статус инстанса изменится на «Готов».
Нажмите Скопировать Thrift URL.
Создайте каталог Managed Trino
Перейдите в раздел Evolution и выберите сервис Managed Trino.
Нажмите Создать + и выберите Каталог.
Заполните поля следующими значениями:
Название — metastore_lab;
Коннектор — выберите metastore;
Thrift URL — скопируйте значение Thrift URL с карточки созданного ранее инстанса Managed Metastore;
Эндпоинт — https://s3.cloud.ru;
Идентификатор ключа доступа — выберите созданный ранее access key для доступа к Object Storage, например dp-labs-access-key;
Секретный ключ доступа — выберите созданный ранее secret key для доступа к Object Storage, например dp-labs-secret-key;
Регион S3 — ru-central-1.
Нажмите Создать.
На странице Managed Trino на вкладке Каталоги появится запись с названием metastore_lab.
Создайте инстанс Managed Trino
Перейдите в раздел Evolution и выберите сервис Managed Trino.
Откройте раздел Инстансы.
Нажмите Создать инстанс.
В блоке Общие параметры заполните поля следующими значениями:
Название — trino-lab-2.
Вычислительные ресурсы — vCPU 4, RAM 16.
Количество нод — 3.
Каталоги — выберите из списка ранее созданный каталог metastore_lab.
Нажмите Продолжить.
В блоке Сетевые настройки выберите:
Зона доступности — зону доступности, для которой создан SNAT-шлюз.
Подсеть — подсеть с DNS-сервером, в которой расположен инстанс Managed Metastore.
Группа безопасности — группу безопасности.
Пользователь — введите имя пользователя.
Пароль — выберите пароль из списка секретов.
Подключить публичный хост — активируйте переключатель.
Нажмите Создать.
Дождитесь, когда статус инстанса изменится на «Готов».
Откройте карточку инстанса Trino. Информация из него понадобится на следующих этапах.
Подключите Trino к DBeaver
Добавьте сертификат в Java KeyStore
Запустите терминал и перейдите в директорию, где хотите сохранить JKS-файл.
Введите команду:
keytool -importcert-alias cloudru-root-file <PATH>/dp-cert.crt-keystore <PATH>/cloudru-truststore.jks-storetype JKS-storepass <YOUR-PASSWORD>-nopromptВ строке -file вместо <PATH> укажите путь до скачанного ранее root-сертификата.
В строке -keystore вместо <PATH> укажите путь до места, где будет храниться JKS-файл.
Сохраните путь. Он понадобится при добавлении JKS-файла в DBeaver.
В строке -storepass вместо <YOUR-PASSWORD> задайте пароль для сертификата.
Сохраните пароль. Он понадобится при добавлении JKS-файла в DBeaver.
Подключите DBeaver
Откройте приложение DBeaver.
В панели сверху нажмите База данных → Новое соединение.
В списке соединений выберите Trino.
Нажмите Далее заполните поля на вкладке Главное:
Хост — публичный хост, указанный в карточке инстанса.
Порт — порт, указанный в карточке инстанса.
Пользователь — пользователь, указанный в карточке инстанса.
Пароль — пароль, указанный в карточке инстанса.
На вкладке Свойства драйвера измените значение свойства SSL на true.
Нажмите Тест соединения.
Нажмите Готово.
Слева в списке объектов появится база данных Metastore с названием «metastore_lab».
Работа с управляемыми таблицами
SQL-запросы в следующих шагах мы будем отправлять через DBeaver. Проверять результат будем в CyberDuck.
Ознакомьтесь с разделом Управляемые и внешние таблицы перед началом.
Управляемая таблица в формате .orc
Создайте схему.
CREATE SCHEMA IF NOT EXISTS metastore_lab.my_companyВ S3 автоматически создастся каталог warehouse и каталог со схемой my_company.db.
Создайте таблицу.
CREATE TABLE IF NOT EXISTS metastore_lab.my_company.employees (id_employee INT, email VARCHAR(255))В S3 создастся каталог employees.
Заполните таблицу.
INSERT INTO metastore_lab.my_company.employees values (1, 'xxx@example.com'), (2, 'yyy@example.com'), (3, 'zzz@example.com')Проверьте результат.
SELECT * FROM metastore_lab.my_company.employeesВ S3 появится файл в формате .orc.
Удалите таблицу.
DROP TABLE metastore_lab.my_company.employees
В результате таблица удалена из Metastore, в S3 все данные вместе с каталогом employees также удалены.
Управляемая таблица в текстовом формате
Создайте схему.
CREATE SCHEMA IF NOT EXISTS metastore_lab.my_companyВ S3 автоматически создастся каталог warehouse и каталог со схемой my_company.db.
Сохраните данные в текстовом формате.
CREATE TABLE IF NOT EXISTS metastore_lab.my_company.employees_csv (id_employee INT, email VARCHAR(255))WITH (format = 'TEXTFILE')Заполните таблицу.
INSERT INTO metastore_lab.my_company.employees_csv values (1, 'xxx@example.com'), (2, 'yyy@example.com'), (3, 'zzz@example.com')Проверьте результат.
SELECT * FROM metastore_lab.my_company.employees_csvВ S3 появится файл в формате .gz.
Удалите таблицу.
DROP TABLE metastore_lab.my_company.employees_csv
В результате таблица удалена из Metastore, в S3 все данные вместе с каталогом employees_csv также удалены.
Работа с внешними таблицами
Работать с внешними таблицами мы будем через CyberDuck.
Запустите CyberDuck.
Откройте бакет S3.
Создайте каталог с названием data.
Подготовьте файл с данными в формате .csv:
колонки: id, email
значения в колонке id: 1, 2, 3
значения в колонке email: xxx@example.com, yyy@example.com, zzz@example.com
Добавьте файл в каталог «data» на S3.
Запустите DBeaver.
Через DBeaver создайте схему.
CREATE SCHEMA IF NOT EXISTS metastore_lab.my_companyСоздайте таблицу.
CREATE TABLE IF NOT EXISTS metastore_lab.my_company.csv_external (id VARCHAR, email VARCHAR)WITH (external_location = 's3a://bucket-4b8dce/data',format = 'CSV',csv_separator = ';',skip_header_line_count = 1)Проверьте результат.
SELECT * FROM metastore_lab.my_company.csv_externalПодготовьте новый файл с данными в формате .csv:
колонки: id, email
значения в колонке id: 4, 5, 6
значения в колонке email: aaa@example.com, bbb@example.com, ccc@example.com
Добавьте файл в каталог «data» на S3. В этом сценарии мы имитируем поступление новых данных из другой системы.
Проверьте результат.
SELECT * FROM metastore_lab.my_company.csv_externalСистема считывает данные из двух разных файлов с одинаковой структурой и с одинаковым разрешением, как если бы это был один файл.
Удалите таблицу.
DROP TABLE metastore_lab.my_company.csv_external
В результате таблица удалена из Metastore. В отличие от управляемых таблиц файлы в S3 остаются доступными.
- Перед началом работы
- Создайте ключи для доступа к Object Storage
- Создайте инстанс Managed Metastore
- Создайте каталог Managed Trino
- Создайте инстанс Managed Trino
- Подключите Trino к DBeaver
- Работа с управляемыми таблицами
- Работа с внешними таблицами