Развертывание Trino
Требования
Linux
- 64-бит
- предпочтительнее использовать более новые версии, особенно при работе в контейнерах
- установление разумных ограничений для пользователя, запускающего Trino. Эти ограничения зависят от дистрибутива Linux, который Вы собираетесь использовать. Количество открытых файловых дескрипторов, необходимых для конкретного экземпляра Trino зависит от количества машин в кластере, умноженного на коэффициент, зависящий от рабочей нагрузки. Ограничение nofile устанавливает максимальное количество файловых дескрипторов, которые может иметь процесс, а ограничение nproc ограничивает количество процессов, и, следовательно, потоков на JVM, которые может создавать пользователь. Мы рекомендуем установить следующие значения (как правило, эта конфигурация находится в файле /etc/security/limits.conf):
<>····Docker-образе Trino.
Python
- версии 2.6.x, 2.7.x, or 3.x
- нужен только для скрипта bin/launcher
Установка Trino
Загрузите тарбол trino-server-462.tar.gz и распакуйте его. Тарбол содержит один каталог верхнего уровня, trino-server-462, который мы называем каталогом установки.
Для хранения журналов Trino нужен каталог данных. Мы рекомендуем создать каталог данных вне каталога установки Trino. Путь к этому каталогу должен быть настроен в Свойствах узла.
Пользователь, запускающий процесс Trino, должен иметь полный доступ на чтение каталога установки, а также доступ на чтение и запись каталога данных.
Настройка Trino
Внутри каталога установки создайте каталог etc. В нем будет храниться следующее:
- Свойства узла: конфигурация среды, специфичная для каждого узла
- JVM Config: параметры командной строки для виртуальной машины Java
- Свойства конфигурации: конфигурация для сервера Trino.
- Свойства каталога: конфигурация для коннекторов (источников данных).
Свойства узла
Файл свойств узла, etc/node.properties, содержит конфигурацию, специфичную для каждого конкретного узла. Узел - это один экземпляр Trino, установленный на машине. Обычно этот файл создается системой развертывания при первой установке Trino. Ниже приведен минимальный вариант etc/node.properties:
<>···
node.environment - имя окружения. Все узлы Trino в кластере должны иметь одинаковое имя среды. Имя должно начинаться со строчного алфавитно-цифрового символа и содержать только строчные алфавитно-цифровые символы или символ подчеркивания (_).
- node.id - уникальный идентификатор установки Trino. Для каждого узла он должен быть уникальным. Этот идентификатор должен оставаться неизменным при перезагрузке или обновлении Trino. Если на одной машине запущено несколько установок Trino (т.е. несколько узлов на одной машине), каждая установка должна иметь свой уникальный идентификатор, который должен начинаться с буквенно-цифрового символа и содержать только буквенно-цифровые символы, - или _.
- node.data-dir - расположение (путь к файловой системе) каталога данных. Здесь Trino хранит журналы и другие данные.
Файл JVM
Конфигурационный файл JVM, etc/jvm.config, содержит список опций командной строки, используемых для запуска виртуальной машины Java. Формат файла - это список опций, по одной в каждой строке. Параметры, содержащие пробелы или другие специальные символы, не должны заключаться в кавычки.
Ниже приводится алгоритм создания etc/jvm.config:
-server -Xmx16G -XX:InitialRAMPercentage=80 -XX:MaxRAMPercentage=80 -XX:G1HeapRegionSize=32M -XX:+ExplicitGCInvokesConcurrent -XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -XX:ReservedCodeCacheSize=512M -XX:PerMethodRecompilationCutoff=10000 -XX:PerBytecodeRecompilationCutoff=10000 -Djdk.attach.allowAttachSelf=true -Djdk.nio.maxCachedBufferSize=2000000 -Dfile.encoding=UTF-8 # Allow loading dynamic agent used by JOL -XX:+EnableDynamicAgentLoading
Значение памяти, используемой Trino, указанное с помощью параметра -Xmx, должно соответствовать памяти, доступной на Ваших узлах. Обычно рекомендуется использовать от 70 до 85 % от общего объема доступной памяти. Например, если все рабочие узлы и координатор занимают 64 Гб оперативной памяти, Вы можете использовать -Xmx54G. Trino использует большую часть выделенной памяти для обработки данных, оставшаяся часть приходится на внутренние процессы JVM, такие как сборка мусора.
Оставшейся части памяти должно быть достаточно для операционной системы и других запущенных служб.
На больших узлах процентное значение может быть другим. Выделение всей памяти под JVM или использование пространства подкачки не поддерживается, пространство подкачки рекомендуется отключить на уровне операционной системы.
Выделение большого объема памяти, превышающего 32 ГБ, не рекомендуется для производственных кластеров.
В случае возникновения ошибки OutOfMemoryError мы записываем дамп кучи для отладки и принудительно завершаем процесс.
Временный каталог
Временный каталог, используемый JVM, должен допускать выполнение кода, поскольку Trino обращается к двоичным файлам общих библиотек и использует их для таких целей, как сжатие и распаковка файлов.
В частности, в монтируемом разделе и каталоге не должен быть установлен флаг noexec. В некоторых операционных системах каталог /tmp по умолчанию монтируется с этим флагом, что препятствует запуску Trino. Вы можете решить эту проблему, переопределив временный каталог, добавив -Djava.io.tmpdir=/path/to/other/tmpdir в список опций JVM.
Свойства конфигурации
Файл свойств конфигурации, etc/config.properties, содержит конфигурацию сервера Trino. Каждый сервер Trino может функционировать как в качестве координатора, так и в качестве рабочего узла. Кластер должен включать одного координатора, выделение машины только для выполнения координационной работы обеспечивает наилучшую производительность на больших кластерах. Масштабирование и распараллеливание операций достигается за счет использования большого количества рабочих узлов.
Ниже приведена минимально конфигурация координатора:
coordinator=true node-scheduler.include-coordinator=false http-server.http.port=8080 discovery.uri=http://example.net:8080
Минимальная настройка рабочих узлов:
coordinator=false http-server.http.port=8080 discovery.uri=http://example.net:8080
В качестве альтернативы, если Вы настраиваете одну машину, которая будет выполнять функции координатора и рабочего узла, используйте следующую конфигурацию:
coordinator=true node-scheduler.include-coordinator=true http-server.http.port=8080 discovery.uri=http://example.net:8080
Описание свойств:
- coordinator: разрешите этому экземпляру Trino работать в качестве координатора, принимать запросы от клиентов и управлять их выполнением.
- node-scheduler.include-coordinator: разрешите планировать работу на координаторе. В больших кластерах обработка процессов на координаторе может повлиять на их производительность, поскольку ресурсы машины недоступны для критически важной задачи планирования, управления и мониторинга выполнения запросов.
- http-server.http.port: указывает порт сервера HTTP. Trino использует HTTP для всех коммуникаций, как внутренних, так и внешних.
- discovery.uri: у координатора Trino есть служба обнаружения, которая используется всеми узлами для поиска друг друга. Каждый экземпляр Trino регистрируется в службе обнаружения при запуске. Служба обнаружения использует HTTP-сервер совместно с Trino и, таким образом, использует тот же самый порт. Замените example.net:8080 на хост и порт координатора Trino. Если Вы отключили HTTP на координаторе, схема URI должна быть https, а не http.
Приведенные выше свойства конфигурации - это минимальный набор, который поможет Вам начать работу. Все дополнительные настройки являются необязательными и зависят от каждого конкретного кластера. Разделы Администрирование и Безопасность содержат документацию, описывающую многие аспекты, в том числе группы ресурсов для определения политик работы с запросами и обеспечение отказоустойчивости.
Справочник Свойства содержит полный список поддерживаемых свойств для таких тем, как Общие свойства, Свойства управления ресурсами, Свойства управления запросами, Веб - UI свойства и другие.
Уровни журналов
Дополнительный файл уровней журнала, etc/log.properties, позволяет установить минимальный уровень журнала для именованных иерархий регистраторов. Каждый логгер имеет имя, которое обычно является полным именем класса, использующего этот логгер. Логгеры имеют иерархию, основанную на точках в имени, подобно пакетам Java. Например, рассмотрим следующий файл уровней журнала:
io.trino=INFO
Это установит минимальный уровень INFO как для io.trino.server, так и для io.trino.plugin.hive. Существует четыре уровня: DEBUG, INFO, WARN и ERROR.
Характеристики каталога
Trino получает доступ к данным через коннекторы, которые устанавливаются в каталоги. Коннектор предоставляет все схемы и таблицы внутри каталога. Например, коннектор Hive сопоставляет каждую базу данных Hive со схемой. Если коннектор Hive установлен как каталог hive, а Hive содержит таблицу clicks в базе данных web, к этой таблице можно получить доступ в Trino как hive.web.clicks.
Каталоги регистрируются путем создания файла свойств каталога в каталоге etc/catalog. Например, создайте файл etc/catalog/jmx.properties со следующим содержимым, чтобы подключить jmx-коннектор в качестве jmx-каталога:
connector.name=jmx
Запуск Trino
При установке Trino предоставляется скрипт bin/launcher, который требует наличия Python в PATH. Этот скрипт можно использовать вручную. Он принимает следующие команды:
|
Command |
Action |
|---|---|
|
run |
Запускает сервер. Чтобы выключить сервер, используйте Ctrl+C в этом же терминале или команду stop из другого терминала. |
|
start |
Запускает демон сервера и возвращает идентификатор его процесса. |
|
stop |
Завершает работу сервера в статусе start и run. Посылает сигнал SIGTERM. |
|
restart |
Останавливает, а затем перезапускает работающий сервер или запускает остановленный сервер, присвоив ему новый идентификатор процесса. |
|
kill |
Выключает зависший сервер, посылая сигнал SIGKILL. |
|
status |
Выводит строку состояния, либо Stopped pid, либо Running as pid. |
Ряд дополнительных опций позволяет указать расположение конфигурационных файлов и каталогов, а также параметры Java. Запустите программу запуска с помощью команды --help, чтобы узнать о поддерживаемых командах, параметрах командной строки и значениях по умолчанию.
Опция -v или --verbose для каждой команды добавляет текущие настройки сервера перед обычным выводом команды.
Trino можно запустить в режиме демона, выполнив следующую команду:
bin/launcher start
Используйте команду status с опцией verbose для получения pid и списка настроек конфигурации:
bin/launcher -v status
В качестве альтернативы его можно запускать в фоновом режиме, а журналы и другие выходные данные записывать в stdout/stderr. При использовании системы наблюдения, например daemontools, следует перехватывать оба потока:
bin/launcher run
Программа запуска устанавливает значения по умолчанию для каталога конфигурации etc, файлов конфигурации в etc, каталога данных, идентичного каталогу установки, файла pid как var/run/launcher.pid и файлов журнала в каталоге var/log.
Вы можете изменить эти значения, чтобы настроить Trino в соответствии со своими требованиямиНапример, Trino RPM настраивает используемые каталоги, чтобы лучше следовать стандарту иерархии файловых систем Linux (FHS).
После запуска Trino Вы сможете найти файлы журналов в каталоге журналов внутри каталога данных var:
- launcher.log: Этот журнал создается программой запуска и подключается к потокам сервера stdout и stderr. Он содержит несколько сообщений, возникающих во время инициализации журнала сервера, а также все ошибки и диагностики, выдаваемые JVM.
- server.log: Это основной файл журнала, используемый Trino. Обычно он содержит информацию, необходимую в случае сбоя сервера во время инициализации.
- http-request.log: Это журнал HTTP-запросов, который содержит каждый HTTP-запрос, полученный сервером.




