Управление каталогами в Trino
Каталог в Trino — это набор конфигурационных свойств, которые представляют один источник данных (например, базу данных) и обеспечивают доступ к нему для движка Trino. В каждом каталоге указан коннектор, а также другие параметры, необходимые для взаимодействия с источником данных.
С помощью каталогов Trino можно обращаться к источнику данных непосредственно в SQL-запросах, указав имя каталога. Например:
SELECT * FROM "hive-adh"."default"."transactions";
Где:
-
hive-adh
— имя встроенного Hive-каталога. -
default
— имя схемы, которая служит для группировки таблиц, представлений и так далее. Например, схема в Trino эквивалентна базе данных в Hive. Для других источников данных схема может сопоставляться с другой сущностью. -
transactions
— имя таблицы для получения данных.
В приведенном выше примере показан каталог для работы с Hive, однако каталоги могут использовать множество коннекторов для работы с различными системами хранения данных. Таким образом, каталоги являются абстракцией для обращения к различным источникам данных.
Вы можете использовать несколько каталогов в одном SQL-выражении, чтобы получить информацию из разных источников данных одним запросом.
Например, при выполнении следующего SQL-запроса Trino получает данные из двух независимых источников: базы данных MySQL и хранилища Hive.
Получив данные с помощью соответствующих коннекторов, Trino применяет операцию JOIN
и возвращает окончательный результат клиенту.
SELECT txns.*, ords.*
FROM "mysql_test_catalog"."demo_schema"."transactions" txns
JOIN "hive-adh"."demo_schema"."orders" ords
ON txns.acc_id = ords.account_id;
Настройка каталогов
Каталоги настраиваются с помощью файлов <catalog_name>.properties, которые хранятся в директории каталогов Trino. По умолчанию данная директория расположена в /etc/trino/conf/catalog на хостах с компонентами Trino. Для изменения директории каталогов по умолчанию используйте параметр catalog.config-dir в ADCM (Clusters → <clusterName> → Services → Trino → Components → Trino Coordinator → node.properties). Пример содержимого директории /etc/trino/conf/catalog/ приведен ниже:
$ ls -l /etc/trino/conf/catalog
-rw-r--r--. 1 trino hadoop 433 Dec 19 14:34 hive-adh.properties -rw-r--r--. 1 trino hadoop 280 Dec 20 10:21 iceberg-adh.properties
Файлы .properties конфигурации каталога содержат следующую информацию:
-
Коннектор, используемый каталогом (свойство
connector.name
). Данное свойство является обязательным в файле <catalog_name>.properties. -
Детали подключения для доступа к источнику данных, такие как URL-адреса подключения, учетные данные и так далее.
-
Настройки безопасности.
-
Другие параметры, необходимые для корректного взаимодействия с источником данных. Например, формат данных, кодеки сжатия и так далее.
Ниже приведен пример встроенного каталога Hive (hive-adh.properties), который используется сервисом Trino для доступа к Hive:
connector.name=hive
fs.hadoop.enabled=True
hive.compression-codec=SNAPPY
hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml
hive.hdfs.impersonation.enabled=False
hive.metastore.thrift.client.ssl.enabled=False
hive.metastore.thrift.impersonation.enabled=True
hive.metastore.uri=thrift://ka-adh-3.ru-central1.internal:9083
hive.non-managed-table-writes-enabled=True
hive.storage-format=PARQUET
Имя файла <catalog_name>.properties определяет имя каталога.
Например, hive-adh.properties хранит настройки каталога с именем hive-adh
.
Просмотр доступных каталогов
Для получения списка каталогов, доступных в сервисе Trino, используйте команду:
SHOW CATALOGS;
Пример вывода:
Catalog --------- hive-adh iceberg-adh test-postgresql-catalog system (4 rows)
Чтобы увидеть все каталоги, использующие определенный коннектор, отправьте следующий запрос:
SELECT *
FROM system.metadata.catalogs
WHERE connector_name='hive';
Пример вывода:
catalog_name|connector_id|connector_name| ------------+------------+--------------+ hive-adh |hive-adh |hive |
Преднастроенные каталоги
Сервис Trino содержит следующие преднастроенные каталоги:
-
Каталог Hive с именем
hive-adh
. Используется для взаимодействия с сервисом Hive, развернутым в ADH-кластере. -
Каталог Iceberg с именем
iceberg-adh
. Используется для работы с таблицами Iceberg.
Если в кластере ADH установлен сервис Hive, конфигурации этих каталогов генерируются автоматически с использованием актуальных значений для доступа к сервису Hive. Параметры преднастроенных каталогов можно редактировать в ADCM UI. Для этого используйте разделы настроек Hive configuration и Iceberg configuration (Clusters → <clusterName> → Services → Trino → Primary configuration).
РЕКОМЕНДАЦИЯ
Чтобы переопределить параметры преднастроенных каталогов, используйте ADCM-настройки Custom Hive configuration и Custom Iceberg configuration соответственно.
|
Управление каталогами с помощью ADCM
Добавление новых каталогов в Trino предполагает создание файлов <catalog_name>.properties в директории каталогов (/etc/trino/conf/catalog/) на всех хостах кластера Trino. ADCM предоставляет пользовательский интерфейс для добавления каталогов вместо ручных манипуляций с файлами .properties.
Ниже показан пример создания каталога Trino, который взаимодействует с Arenadata Postgres (ADPG) через коннектор PostgreSQL:
-
В ADCM перейдите на страницу Clusters → <clusterName> → Services → Trino → Primary configuration и активируйте опцию Custom catalogs.
-
Разверните секцию Custom catalogs и укажите свойства, перечисленные в таблице ниже.
catalog_name key value test_catalog_adpg
connector.name
postgresql
connection-url
jdbc:postgresql://<ADPG_master_host>:5432
connection-user
postgres
connection-password
postgres
-
Сохраните конфигурацию и перезапустите сервис Trino. При перезапуске ADCM создает файлы test_catalog_adpg.properties на всех хостах ADH, где установлены компоненты Trino. Проверьте, что файлы test_catalog_adpg.properties были созданы:
$ ls /etc/trino/conf/catalog/
Результат:
hive-adh.properties iceberg-adh.properties test_catalog_adpg.properties
-
Подключитесь к Trino (например, через Trino CLI или SQL-клиент типа DBeaver) и запросите список доступных каталогов:
SHOW CATALOGS;
Новый каталог доступен в списке:
Catalog | -----------------+ hive-adh | iceberg-adh | system | test_catalog_adpg|
Теперь можно обращаться к серверу ADPG, используя каталог test_catalog_adpg
.
Например:
SELECT * FROM "test_catalog_adpg"."public"."book";
Результат:
book_id|title |author_id|in_stock| -------+---------------------+---------+--------+ 1|Mrs. Dalloway | 1| 25| 2|To the Lighthouse | 1| 13| 3|To Kill a Mockingbird| 2| 0| 4|The Great Gatsby | 3| 3| 5|The Lord of the Rings| 4| 45|
Каталог также можно создать вручную, разместив файлы <catalog_name>.properties в директории каталогов (/etc/trino/conf/catalog/) на всех хостах с компонентами Trino. Пример содержимого test_catalog_adpg.properties приведен ниже:
connector.name = postgresql
connection-url = jdbc:postgresql://10.92.40.105:5432/postgres
connection-user = postgres
connection-password = postgres
После добавления файла .properties в директорию каталогов необходимо перезапустить сервис Trino.
Параметры управления каталогами
Следующие конфигурационные параметры используются для управления жизненным циклом каталогов в Trino. По умолчанию сервис Trino запускается с дефолтными значениями этих параметров. Чтобы переопределить конфигурационный параметр, используйте поле Custom config.properties в ADCM-настройках компонента Trino Coordinator.
Свойство | Описание | Значение по умолчанию |
---|---|---|
catalog.management |
Допустимые значения: Данный параметр имеет ограничения для некоторых коннекторов. Подробная информация доступна в документации Trino |
static |
catalog.prune.update-interval |
Требует установки |
5s |
catalog.store |
Допустимые значения: |
file |
catalog.config-dir |
Требует установки |
/etc/trino/conf/catalog/ |
catalog.disabled-catalogs |
Требует установки |
— |
catalog.read-only |
Требует установки |
false |