Управление каталогами#

Примечание

Ниже приведена оригинальная документация Trino. Скоро мы ее переведем на русский язык и дополним полезными примерами.

Свойства ниже определяют, как происходит работа с каталогами в кластере CedrusData.

catalog.management#

  • Type: string

  • Allowed values: static, cedrusdata_dynamic, dynamic

  • Default value: static

CedrusData поддерживает три режима работы с каталогами:

  1. static - список каталогов фиксирован и определяется файлами *.properties, расположенными в директории etc/catalog. Создание и удаление каталогов невозможно без перезагрузки узлов. Выполнение команд CREATE CATALOG и DROP CATALOG приводит к ошибке.

  2. cedrusdata_dynamic - динамическое управление каталогами, используя проприетарный алгоритм CedrusData. Возможно создание и удаление каталогов возможно без перезагрузки узлов с помощью команд CREATE CATALOG и DROP CATALOG. Позволяет консистентно хранить конфигурацию каталогов в СУБД Postgres иди локальной файловой системе с помощью RocksDB.

  3. dynamic - динамическое управление каталогами, используя встроенные возможности Trino. Возможно создание и удаление каталогов возможно без перезагрузки узлов с помощью команд CREATE CATALOG и DROP CATALOG. Является экспериментальным и содержит ошибки, которые могут приводить к непредсказуемому поведению запросов. Не рекомендовано к использованию в production.

См. также: CREATE CATALOG, DROP CATALOG

Предупреждение

Некоторые коннекторы могут не освобождать все ресурсы при удалении. Это включает коннекторы, которые читают данные из HDFS, S3, GCS, или Azure: Hive коннектор, Iceberg коннектор, Delta Lake коннектор, Hudi коннектор.

cedrusdata.catalog.store.type#

  • Тип: string

  • Допустимые значения: rocksdb, jdbc, memory

  • Значение по умолчанию: rocksdb

Требует режим работы cedrusdata_dynamic.

Задает тип хранилища свойств каталогов:

  1. rocksdb - каталоги хранятся в файлах RocksDB на координаторе. Экземпляр RocksDB будет создан и запущен CedrusData автоматически. Необходимо задать параметр cedrusdata.catalog.store.rocksdb.path.

  2. jdbc - каталоги хранятся в СУБД Postgres. Вы должны запустить экземпляр Postgres перед запуском координатора. Необходимо задать параметры cedrusdata.catalog.store.jdbc.url, cedrusdata.catalog.store.jdbc.username, cedrusdata.catalog.store.jdbc.password.

  3. memory - каталоги хранятся в памяти координатора. При перезапуске координатора все каталоги будут утеряны. Используйте данный режим только в целях тестирования.

cedrusdata.catalog.store.rocksdb.path#

  • Тип: string

  • Значение по умолчанию: etc/catalog/cedrusdata_catalog_store.rocksdb

Требует режим работы cedrusdata_dynamic и cedrusdata.catalog.store.type=rocksdb.

Задает директорию RocksDB, в которой будут храниться каталоги. Путь может быть абсолютным или относительным. Если путь относительный, он будет разрешен относительно node.data-dir. Если директория пуста или не существует, новая база данных RocksDB будет инициализирована автоматически при запуске координатора.

cedrusdata.catalog.store.jdbc.url#

Требует режим работы cedrusdata_dynamic и cedrusdata.catalog.store.type=jdbc.

Задает JDBC URL к базе данных, в которых будут храниться каталоги. В настоящий момент поддерживается только СУБД Postgres.

cedrusdata.catalog.store.jdbc.username#

Требует режим работы cedrusdata_dynamic и cedrusdata.catalog.store.type=jdbc.

Задает имя пользователя СУБД Postgres.

cedrusdata.catalog.store.jdbc.password#

Требует режим работы cedrusdata_dynamic и cedrusdata.catalog.store.type=jdbc.

Задает пароль СУБД Postgres.

cedrusdata.catalog.store.migrate-file-catalogs#

  • Тип: boolean

  • Значение по умолчанию: false

Если вы ранее использовали статические каталоги, то включение данного параметра позволит вам автоматически мигрировать статические каталоги в хранилище динамических каталогов. Миграция происходит только тогда, когда хранилище динамических каталогов является пустым. В противном случае параметр будет проигнорирован.

Предупреждение

В процессе миграции происходит чтение файлов статических каталогов координатора и их перенос в хранилище динамических каталогов. Если некоторые ваши каталоги имеют отличные свойства на координаторе и worker-узлах, автоматическая миграция не сможет учесть свойства worker-узлов. Учитывайте это при планировании миграции.

cedrusdata.catalog.node-groups#

Требует режим работы cedrusdata_dynamic. Разделенный запятыми список групп, в которые входит данный узел. Позволяет выборочно применять свойства каталога к отдельным узлами при вызове команды CREATE CATALOG. Координатор всегда состоит в группе coordinator. Worker-узел всегда состоит в группе worker.

cedrusdata.catalog.prune-interval#

  • Тип: duration

  • Значение по умолчанию: 1s

  • Минимальное значение: 1ms

Требует режим работы cedrusdata_dynamic. Определяет частоту отправки запросов с координатора на worker-узлы на окончательное удаление каталогов, на которых была вызвана команда DROP CATALOG.

catalog.prune.update-interval#

  • Type: duration

  • Default value: 5s

  • Minimum value: 1s

Requires catalog.management to be set to dynamic. Interval for pruning dropped catalogs. Dropping a catalog does not interrupt any running queries that use it, but makes it unavailable to any new queries.

catalog.store#

  • Type: string

  • Allowed values: file, memory

  • Default value: file

Requires catalog.management to be set to dynamic. When set to file, creating and dropping catalogs using the SQL commands adds and removes catalog property files on the coordinator node. Trino server process requires write access in the catalog configuration directory. Existing catalog files are also read on the coordinator startup. When set to memory, catalog configuration is only managed in memory, and any existing files are ignored on startup.

catalog.config-dir#

  • Type: string

  • Default value: etc/catalog/

Requires catalog.management to be set to static or catalog.store to be set to file. The directory with catalog property files.

catalog.disabled-catalogs#

Requires catalog.management to be set to static or catalog.store to be set to file. Comma-separated list of catalogs to ignore on startup.

catalog.read-only#

  • Type: string

  • Default value: false

Requires catalog.store to be set to file. If true, existing catalog property files cannot be removed with DROP CATALOG, and no new catalog files can be written with identical names with CREATE CATALOG. As a result, a coordinator restart resets the known catalogs to the existing files only.