Управление каталогами в 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:

  1. В ADCM перейдите на страницу Clusters → <clusterName> → Services → Trino → Primary configuration и активируйте опцию Custom catalogs.

  2. Разверните секцию 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

  3. Сохраните конфигурацию и перезапустите сервис 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
  4. Подключитесь к 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

Допустимые значения: static, dynamic. Если установлено значение static, сервис Trino считывает файлы <catalog_name>.properties и создает соответствующие каталоги только в момент запуска. Таким образом, при добавлении нового файла <catalog_name>.properties требуется перезапуск сервиса Trino.

Данный параметр имеет ограничения для некоторых коннекторов. Подробная информация доступна в документации Trino

static

catalog.prune.update-interval

Требует установки catalog.management=dynamic. Указывает интервал для физического удаления файлов каталога. Удаление каталога не прерывает выполняющиеся запросы (если таковые имеются), однако делает каталог недоступным для новых запросов

5s

catalog.store

Допустимые значения: file, memory. Требует установки catalog.management=dynamic. Если установлено значение file, создание и удаление каталогов с помощью команд SQL также добавляет/удаляет файлы <catalog_name>.properties. Существующие файлы каталогов также считываются при запуске сервиса Trino. Если установлено значение memory, объекты каталогов хранятся только в памяти, а все файлы .properties игнорируются при старте сервиса

file

catalog.config-dir

Требует установки catalog.management=static или catalog.store=file. Определяет директорию с файлами <catalog_name>.properties

/etc/trino/conf/catalog/

catalog.disabled-catalogs

Требует установки catalog.management=static или catalog.store=file. Разделенный запятыми список каталогов, которые следует игнорировать при чтении файлов <catalog_name>.properties во время запуска сервиса

 — 

catalog.read-only

Требует установки catalog.store=file. Если установлено значение true, существующие файлы <catalog_name>.properties не могут быть удалены с помощью команды DROP CATALOG, а также не могут быть созданы новые файлы с дублирующимися именами при выполнении команды CREATE CATALOG. В итоге при перезапуске сервиса Trino остаются лишь каталоги, определенные в файлах <catalog_name.properties>

false

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней