Подключение из CedrusData#
CedrusData — это высокопроизводительная система для обработки больших данных на основе open-source проекта Trino.
Подключение к CedrusData Catalog из CedrusData происходит с помощью коннектора Iceberg.
CedrusData может взаимодействовать с CedrusData Catalog через нативный протокол или через Iceberg REST протокол. Мы рекомендуем использовать нативный протокол, так как он обеспечивает более высокую производительность и поддерживает материализованные представления.
Примечание
При работе через нативный протокол возможен запуск CedrusData Catalog в embedded режиме. В этом случае CedrusData и CedrusData Catalog работают в рамках одного процесса. Это упрощает развертывание и повышает производительность.
Данный документ описывает процесс подключения к CedrusData Catalog из CedrusData через нативный протокол.
Подключение к CedrusData Catalog из CedrusData через Iceberg REST протокол идентично подключению из Trino.
Подготовка#
Убедитесь, что CedrusData Catalog содержит хотя бы один Iceberg каталог
Получите постоянный или временный токен доступа CedrusData Catalog
Конфигурация CedrusData#
Сконфигурируйте в CedrusData подключение к CedrusData Catalog согласно инструкциям.
Для это в файле конфигурации etc/config.properties
укажите следующие параметры:
cedrusdata-catalog.mode=remote
cedrusdata-catalog.access-token=<токен_доступа_CedrusData_Catalog>
cedrusdata-catalog.remote.uri=<адрес_CedrusData_Catalog>
В конфигурации вашего Iceberg каталога укажите следующие параметры:
iceberg.catalog.type=cedrusdata_catalog
iceberg.cedrusdata-catalog.catalog-name=<имя_каталога_Iceberg_в_CedrusData_Catalog>
Где:
<адрес_CedrusData_Сatalog>
— адрес, по которому доступен CedrusData Catalog (http(s)://host[:port]
)<токен_доступа_CedrusData_Catalog>
— токен доступа CedrusData Catalog: постоянный токен доступа для типа аутентификацииcredential
; постоянный иди временный токен доступа для типа аутентификацииtoken
<имя_каталога_Iceberg_в_CedrusData_Catalog>
— имя объекта Iceberg catalog, зарегистрированного в CedrusData Catalog
Кроме этого, в конфигурации Iceberg каталога вы должны задать конфигурацию файловой системы для доступа к файловой системе. В конце документа приведен пример полной конфигурации для доступа к S3-совместимой файловой системе.
Пример#
Инструкции ниже описывают, как интегрировать локальный экземпляр CedrusData с CedrusData Catalog.
Создайте файловую систему CedrusData Catalog на основе MinIO согласно инструкциям. Не останавливайте Docker-контейнеры.
Создайте Iceberg каталог с именем
ice_prod
в CedrusData Catalog:docker exec -it example-catalog catalog iceberg catalog create \ --catalog-name ice_prod \ --file-system-name minio \ --file-system-location s3://ice-bucket
Создайте файл
config.properties
, в котором укажите параметры подключения к CedrusData Catalog из CedrusData:coordinator=true node-scheduler.include-coordinator=true http-server.http.port=8080 discovery.uri=http://localhost:8080 catalog.management=${ENV:CATALOG_MANAGEMENT} cedrusdata-catalog.mode=remote cedrusdata-catalog.access-token=${ENV:CATALOG_ACCESS_TOKEN} cedrusdata-catalog.remote.uri=http://example-catalog:9080/
Запустите Docker-контейнер CedrusData. Мы передадим ключи MinIO и токен доступа CedrusData Catalog в качестве переменных окружения, чтобы нам не писать их в явном виде в дальнейшем. Мы также заменим файл конфигурации
/etc/trino/config.properties
в контейнере CedrusData, чтобы передать параметры подключения к CedrusData Catalog.CATALOG_ACCESS_TOKEN=$(docker exec example-catalog cat /data/catalog/catalog-admin-access-token) && \ docker run -d \ --name example-cedrusdata \ --network=example-network \ -e CATALOG_MANAGEMENT=cedrusdata_dynamic \ -e CATALOG_ACCESS_TOKEN=$CATALOG_ACCESS_TOKEN \ -e MINIO_ACCESS_KEY=accesskey \ -e MINIO_SECRET_KEY=secretkey \ -p 8080:8080 \ -v ${PWD}/config.properties:/etc/trino/config.properties \ cr.yandex/crpjtvqf29mpabhmrf1s/cedrusdata:458-4
Откройте SQL-редактор CedrusData по адресу http://localhost:8080/cedrus-ui. В окне авторизации задайте имя пользователя
alice
.Создайте новый каталог
ice
:CREATE CATALOG ice USING iceberg WITH ( "iceberg.catalog.type" = 'CEDRUSDATA_CATALOG', "iceberg.cedrusdata-catalog.catalog-name" = 'ice_prod', "fs.hadoop.enabled" = 'false', "fs.native-s3.enabled" = 'true', "s3.endpoint" = 'http://example-minio:9000', "s3.region" = 'us-east-1', "s3.path-style-access" = 'true', "s3.aws-access-key" = '${ENV:MINIO_ACCESS_KEY}', "s3.aws-secret-key" = '${ENV:MINIO_SECRET_KEY}' );
Попробуйте отобразить список схем. CedrusData вернет ошибку, так как мы включили имперсонацию (
iceberg.rest-catalog.session=user
), но пользовательalice
не зарегистрирован в CedrusData Catalog:SHOW SCHEMAS IN ice;
Error listing schemas for catalog ice: Malformed request: unauthorized_client: Authentication failed
Создайте пользователя
alice
в CedrusData Catalog и предоставьте ему рольbuiltin.iceberg.admin
:docker exec -it example-catalog catalog principal create \ --principal-name alice docker exec -it example-catalog catalog role grant \ --principal-name alice \ --role-name builtin.iceberg.admin
Пользователь
alice
теперь имеет необходимые права доступа. Выполните ряд команд SQL:CREATE SCHEMA IF NOT EXISTS ice.hr; DROP TABLE IF EXISTS ice.hr.employee; CREATE TABLE ice.hr.employee(id BIGINT, name VARCHAR(100)); INSERT INTO ice.hr.employee VALUES (1, 'John'); SELECT * FROM ice.hr.employee;
Пройдите в консоль MinIO http://localhost:9001 (имя пользователя
accesskey
, парольsecretkey
), и ознакомьтесь с созданными файлам Iceberg в директорииice-bucket/hr/employee
.Получите список таблиц Iceberg через утилиту командной строки CedrusData Catalog:
docker exec -it example-catalog catalog iceberg object list
(при необходимости) Остановите контейнер CedrusData:
docker rm -f example-cedrusdata
Очистите остальные ресурсы, следуя последнему шагу инструкции.