Конфигурация#

Данный документ содержит полный список параметров конфигурации CedrusData Catalog.

Общая информация#

Конфигурация каталога осуществляется путем изменения трех файлов конфигурации:

  • config.properties — определяет основную конфигурацию каталога.

  • log.properties — задает конфигурацию логирования.

  • jvm.config — задает параметры запуска JVM.

Все файлы конфигурации должны находиться в одной директории.

При запуске из распакованного архива, данные файлы по умолчанию находятся в директории etc/. Вы можете изменить путь к директории с файлами конфигурации с помощью параметра командной строки --etc-dir. Например:

cedrusdata-catalog-server-458-1/bin/launcher run --etc-dir /path/to/config/dir

При запуске из Docker-образа, данные файлы находятся в директории /etc/catalog. Для изменения конфигурации каталога, запускаемого из Docker-образа, необходимо сделать mount директории с файлами конфигурации на хосте на директорию /etc/catalog в Docker-контейнере. Например:

docker run -d \
    --name example-catalog \
    -p 9080:9080 \    
    -v /path/to/config/dir:/etc/catalog/ \
    cr.yandex/crpjtvqf29mpabhmrf1s/cedrusdata-catalog:458-1

Если вы хотите заменить только отдельные файлы конфигурации в Docker-контейнере, сделайте mount этих файлов. Следующий скрипт заменяет только файл etc/config.properties:

docker run -d \
    --name example-catalog \
    -p 9080:9080 \    
    -v /path/to/config/dir/config.properties:/etc/catalog/config.properties \
    cr.yandex/crpjtvqf29mpabhmrf1s/cedrusdata-catalog:458-1

Конфигурация каталога#

Данный раздел описывает параметры конфигурации каталога, которые можно задать в файле config.properties.

Конфигурация каталога представляет собой набор пар ключ-значение, разделенных символом =.

Переменные окружения#

Вы можете передавать значения отдельных параметров через переменные окружения. Для этого в значении параметра должна быть указана строка в формате ${ENV:имя_переменной_окружения}. Все вхождения подобных строк будут заменены на значения соответствующих переменных окружения. Если переменная окружения не задана, каталог вернет ошибку.

Вы также можете указать строку в формате ${ENV-OPTIONAL:имя_переменной_окружения}. В таком случае отсутствие переменной окружения не приведет к ошибке, а сама строка будет заменена на пустую строку.

Общие параметры#

Данный раздел описывает общие параметры конфигурации каталога.

Параметр

Описание

data-dir

Путь к рабочей директории каталога. При запуске из распакованного архива рабочую директорию можно указать с помощью параметра командной строки --data-dir. Если значение --data-dir является относительным путем, он будет разрешен относительно директории, из которой происходит запуск CedrusData Catalog. При запуске из Docker-образа, рабочей директорией по умолчанию является /data/catalog

admin-principal

Имя начального пользователя с административными привилегиями. Параметр используется только при первом запуске каталога. Значение по умолчанию: root

admin-password

Пароль начального пользователя с административными привилегиями. Параметр используется только при первом запуске каталога. Если вы зададите непустое значение, то вы сможете обращаться к каталогу, используя значения admin-principal и admin-password в качестве имени и пароля, соответственно. Если вы оставите значение пустым, каталог сгенерирует случайный пароль администратора, а также создаст файл с постоянным токеном доступа согласно значению параметра admin-access-token-file-path. Значение по умолчанию: пустая строка (пароль будет сгенерирован автоматически)

admin-access-token-file-path

Путь файловой системы по которому будет сгенерирован файл с постоянным токеном доступа, если не задан пароль администратора admin-password. Параметр используется только при первом запуске каталога. Значение по умолчанию: resource (относительно data-dir)

jwt.token-ttl

Время жизни временных токенов доступа. Вам может потребоваться изменить данный параметр, если клиенты каталога выполняют длительные операции (например, многочасовые ETL-задачи), но при этом не поддерживают автоматическое обновление временных токенов. В большинстве случаев вам не потребуется изменять значение данного параметра. Значение по умолчанию: 1h (один час)

jwt.state-key

Ключ, который будет использован для формирования криптографической подписи временного токена доступа. Если значение оставлено пустым, случайный ключ будет сгенерирован при старте каталога. Так как случайный ключ изменяется при каждом перезапуске каталога, временные токены доступа, выданные с предыдущим ключом, перестанут работать после перезапуска. Это может привести к временным ошибкам у пользователей и необходимости перезапустить некоторые операции. Задание ключа в явном виде позволяет избежать данной проблемы. Значение по умолчанию: пустая строка (будет сгенерирован случайный ключ)

resource-dir

Директория, в которой хранятся произвольные ресурсы CedrusData Catalog. Директория ресурсов позволяет вам ссылаться на различные файлы, требуемые отдельными компонентами каталога. В первую очередь это необходимо для конфигурации HDFS, которой требуются файлы конфигурации HDFS (например, core-site.xml, hdfs-site.xml, файлы Kerberos, и т.д.). Значение по умолчанию: resource (относительно data-dir)

plugin-dir

Директория, в которой находятся плагины CedrusData Catalog. Вы можете использовать данный параметр, чтобы ограничить или изменить список плагинов. По умолчанию CedrusData Catalog инициализирует все доступные плагины, которые находятся в директории plugin при установке из архива, или в директории /usr/lib/catalog/plugin при запуске из Docker-образа. Для ограничения списка загружаемых плагинов, вы можете скопировать плагины, которые вы хотите оставить, в отдельную директорию, и передать путь к ней в качестве параметра конфигурации plugin-dir. Значение по умолчанию: plugin (относительно data-dir)

Хранилище#

CedrusData Catalog хранит метаданные в СУБД SQLite или PostgreSQL. Данный раздел описывает конфигурацию хранилища.

Параметр

Описание

store.type

Задает тип хранилища. Допустимые значения: sqlite, postgresql. Значение по умолчанию: sqlite

store.sqlite.path

Путь к файлу базы данных SQLite. Используется, когда задан тип хранилища sqlite Значение по умолчанию: store/sqlite.db (относительно data-dir)

store.postgresql.jdbc-url

JDBC строка подключения к PostgreSQL. Используется, когда задан тип хранилища postgresql. См. документацию PostgreSQL JDBC Driver

store.postgresql.username

Имя пользователя для подключения к PostgreSQL. Используется, когда задан тип хранилища postgresql

store.postgresql.password

Пароль для подключения к PostgreSQL. Используется, когда задан тип хранилища postgresql Может быть оставлен пустым, если конфигурация PostgreSQL позволяет подключаться без пароля

store.jdbc-connection-pool.size

Размера пула JDBC соединений HikariCP. Значение 0 отключает пул JDBC соединений. Значение по умолчанию: количество логических процессоров, умноженное на 4, но не более 64

store.jdbc-connection-pool.ttl

Время жизни соединения в пуле JDBC соединений HikariCP. Значение 0s отключает пул JDBC соединений. Значение по умолчанию: 5m (пять минут)

store.max-page-size

Максимальный размер страницы при осуществлении листинга объектов. Увеличение данного параметра позволяет уменьшить количество сетевых вызовов при листинге большого количества объектов (например, таблиц Iceberg), но увеличивает потребление памяти. Значение по умолчанию подойдет для большинства видов нагрузок. Значение по умолчанию: 10_000

HTTP сервер#

CedrusData Catalog принимает команды по протоколу HTTP. Данный раздел описывает конфигурацию встроенного HTTP-сервера.

Параметр

Описание

server.bind-ip

Задает IP-адрес интерфейса, на котором будет запущен сервер. Значение по умолчанию: пустое значение (сервер будет запущен на произвольном интерфейсе)

server.http.enabled

Разрешает или запрещает доступ к каталогу по протоколу http. Каталог может одновременно обслуживать запросы по протоколам http и https на разных портах (см. параметр server.https.enabled). Значение по умолчанию: true (доступ по http разрешен)

server.http.port

Порт сервера при работе по протоколу http. Значение по умолчанию: 9080

server.http.process-forwarded

Разрешать ли запросы с заголовками X-Forwarded-* при работе по протоколу http. Установите значение данного параметра в true, если вы используете TLS Termination Proxy для перенаправления запросов к каталогу. Значение по умолчанию: false (запросы по протоколу http с заголовком X-Forwarded-* будут отклонены)

server.https.enabled

Разрешает или запрещает доступ к каталогу по протоколу https. Каталог может одновременно обслуживать запросы по протоколам http и https на разных портах (см. параметр server.http.enabled). Значение по умолчанию: false (доступ по https запрещен)

server.http.port

Порт сервера при работе по протоколу https. Значение по умолчанию: 9443

server.https.keystore-path

Путь к keystore в формате PEM или JKS. Параметр является обязательным для работы по протоколу https. Значение по умолчанию: пустая строка (не задан)

server.https.keystore-password

Пароль keystore в формате PEM или JKS. Параметр используется только при работе по протоколу https. Значение по умолчанию: пустая строка (не задан)

server.https.keymanager-password

Пароль сертификата keystore. Необходим, если пароль сертификата отличается от пароля keystore (применимо только к keystore в формате JKS). Параметр используется только при работе по протоколу https. Значение по умолчанию: пустая строка (не задан)

server.https.truststore-path

Путь к truststore в формате PEM или JKS. Параметр используется только при работе по протоколу https. Значение по умолчанию: пустая строка (не задан)

server.https.truststore-password

Пароль truststore в формате PEM или JKS. Параметр используется только при работе по протоколу https. Значение по умолчанию: пустая строка (не задан)

server.https.included-cipher-suites

Список алгоритмов шифрования, перечисленных через запятую, использование которых разрешено. Параметр используется только при работе по протоколу https. Значение по умолчанию: пустая строка (все алгоритмы шифрования допустимы к использованию)

server.https.excluded-cipher-suites

Список алгоритмов шифрования, перечисленных через запятую, использование которых запрещено. Параметр используется только при работе по протоколу https. Значение по умолчанию: пустая строка (нет запрещенных алгоритмов шифрования)

server.https.session-timeout

Время жизни TLS сессии. Параметр используется только при работе по протоколу https. Значение по умолчанию: 4h (четыре часа)

server.https.session-cache-size

Размер кэша TLS сессий. Параметр используется только при работе по протоколу https. Значение по умолчанию: 10_000

server.https.context-refresh-time

Как часто перечитывать содержимое сертификатов. Параметр используется только при работе по протоколу https. Значение по умолчанию: 1m (каждую минуту)

Производительность#

CedrusData Catalog активно кэширует внутренние объекты для повышения производительности и уменьшения количества обращений к СУБД или удаленной файловой системе. Данный раздел описывает конфигурацию различных кэшей каталога.

Параметр

Описание

cache.principal.size

Размер кэша пользователей в байтах. Кэш хранит информацию в оперативной памяти процесса. Информация об одном пользователе занимает 100-200 байт. Таким образом, 1 мегабайт кэша может вместить информацию о 5000-10000 пользователях. В большинстве случаев вам не придется изменять значение данного параметра. Установка значения в 0B отключает кэш. Значение по умолчанию: 32MB (32 мегабайта)

cache.principal.ttl

Время жизни записи кэша пользователей. В большинстве случаев вам не придется изменять значение данного параметра. Установка значения в 0s отключает кэш. Значение по умолчанию: 1d (один день)

cache.iceberg-table-metadata.size

Размер кэша метаданных таблиц Iceberg. Кэш хранит информацию в оперативной памяти процесса. Размер метаданных одной таблицы может варьировать от нескольких килобайт до нескольких мегабайт. Значение по умолчанию подойдет для большого количества сценариев. Если ваша схема данных содержит значительное количество таблиц, которые имеют большое количество атрибутов или партиций, или часто изменяются, вам может потребоваться увеличить размер кэша. Мы рекомендуем рассчитывать целевое потребление памяти кэша из расчета 100 килобайт на одну таблицу (один гигабайт на десять тысяч таблиц). Кэш метаданных обеспечивает существенный прирост производительности в первую очередь для часто используемых таблиц. Кэшировать метаданные всех таблиц необязательно. Установка значения в 0B отключает кэш. Значение по умолчанию: 1GB (один гигабайт)

cache.iceberg-table-metadata.ttl

Время жизни записи кэша метаданных таблиц Iceberg. В большинстве случаев вам не придется изменять значение данного параметра. Установка значения в 0s отключает кэш Значение по умолчанию: 1d (один день)

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

CedrusData Catalog предоставляет широкие возможности мониторинга состояния системы.

Параметр

Описание

jmx.remote-port

Задает порт для подключения удаленных JMX-агентов. См. JMX. Значение по умолчанию: null (подключение удаленных JMX-агентов запрещено)

jmx.remote-rmi-port

Задает порт для подключения удаленных JMX-агентов по протоколу RMI. См. JMX. Значение по умолчанию: null (подключение удаленных JMX-агентов по протоколу запрещено)

openmetrics.enabled

Разрешает или запрещает экспорт метрик в формате OpenMetrics. См. Prometheus и Grafana. Значение по умолчанию: true (экспорт метрик разрешен)

openmetrics.jmx-object-names

Список системных объектов JMX, метрики которых необходимо экспортировать. См. Prometheus и Grafana. Значение по умолчанию: пустая строка (экспортируются только метрики каталога)

telemetry.enabled

Задает список подсистем каталога, подлежащих трассировке. См. OpenTelemetry. Имена подсистем могут быть перечислены через запятую. Допустимые значения: http - трассировать HTTP запросы, api - трассировать вызовы методов каталога, store - трассировать обращения к СУБД каталога, file_system - трассировать вызовы распределенных файловых систем, all - трассировать все перечисленные выше подсистемы. Значение по умолчанию: пустая строка (трассировка отключена)

telemetry.exporter-endpoint

Адрес коллектора трейсов в формате OpenTelemetry Protocol (OTLP). См. OpenTelemetry. Значение по умолчанию: http://localhost:4317 (коллектор, запущенный на том же хосте, что и каталог)

telemetry.sampling-ratio

Процент операций, подлежащих трассировка. См. OpenTelemetry. Значение должно находиться в диапазон от 0.0 до 1.0. Значение по умолчанию: 1.0 (трассировать все операции)

Конфигурация логирования#

CedrusData Catalog логирует различные события, возникающие в процессе эксплуатации. При запуске из распакованного архива с помощью команды bin/launcher run, каталог логирует события в консоль. При запуске из распакованного архива с помощью команд bin/launcher start или bin/launcher restart, каталог логирует события в rolling файл в директории <data-dir>/var/log/server.log. При запуске из Docker-образа, каталог логирует события в консоль Docker. Логи контейнера доступны с помощью команды docker logs <имя_контейнера>. Кроме того, во всех режимах работы каталог дополнительно логирует все HTTP-запросы в rolling файл <data-dir>/var/log/http-request.log.

Вы можете настраивать уровни логирования для отдельных источников событий с помощью файла log.properties.

Конфигурация JVM#

CedrusData Catalog работает внутри процесса JVM. Используйте файл jvm.config для изменения параметров JVM. Ознакомиться со списком доступных опций можно в документации вашего вендора JVM. Доступные опции незначительно отличаются между вендорами JVM. Поэтому наиболее детализированной документации произвольного вендора в большинстве случае предоставит ответы на ваши вопросы. Мы рекомендуем начинать ознакомление с опциями JVM с документации Oracle JDK.

В большинстве случаев параметров JVM по умолчанию, представленных в оригинальной версии файла jvm.config, будет достаточно для эксплуатации каталога.