Trino в Docker контейнере#
Проект Trino предоставляет стандартный Docker-образ trinodb/trino, который включает сервер Trino, все plugins и конфигурацию по умолчанию.
Дополнительный Docker-образ trinodb/trino-core содержит только минимальный набор основных plugins и поэтому в основном подходит как база для создания собственных контейнеров. Проект trino-packages включает модуль для создания кастомного Docker-образа с вашим собственным набором plugins.
Docker-образы публикуются в Docker Hub и могут использоваться с Docker runtime, а также с рядом других сред. Эти образы подходят для использования с Trino Helm chart.
Запуск контейнера#
Чтобы запустить Trino в Docker, необходимо, чтобы на вашей машине был установлен Docker engine. Вы можете скачать Docker с официального сайта Docker или использовать систему пакетов вашей операционной системы.
Используйте команду docker, чтобы создать контейнер из образа
trinodb/trino. Назовите его trino, чтобы упростить дальнейшее
обращение к нему. Запустите его в фоновом режиме и пробросьте
порт Trino по умолчанию (8080) из контейнера на порт 8080
вашей рабочей станции.
docker run --name trino -d -p 8080:8080 trinodb/trino
Если не указывать тег образа контейнера, по умолчанию используется latest,
однако можно использовать любую выпущенную версию Trino, например
trinodb/trino:latest.
Выполните docker ps, чтобы увидеть все контейнеры,
запущенные в фоновом режиме.
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
955c3b3d3d0a trinodb/trino:390 "/usr/lib/trino/bin/…" 39 hours ago Up 39 hours (healthy) 0.0.0.0:8080->8080/tcp trino
Пока Trino запускается, отображается (health: starting),
а когда он готов — (healthy).
Note
Существует несколько способов использования Trino в контейнерах. Вы можете запускать Trino локально в Docker-контейнерах, как описано в следующих разделах, или использовать платформу оркестрации контейнеров, такую как Kubernetes. Инструкции для Kubernetes см. в Trino на Kubernetes с Helm.
Выполнение запросов#
Образ включает клиент командной строки (CLI) Trino — trino.
Запустите его в существующем контейнере, чтобы подключиться к серверу
Trino, работающему внутри него. После запуска клиента введите и выполните
запрос к таблице из каталога tpch, который содержит примерные данные:
$ docker exec -it trino trino
trino> select count(*) from tpch.sf1.nation;
_col0
-------
25
(1 row)
Query 20181105_001601_00002_e6r6y, FINISHED, 1 node
Splits: 21 total, 21 done (100.00%)
0:06 [25 rows, 0B] [4 rows/s, 0B/s]
Когда вы закончите работу, введите команду quit.
Альтернативно вы можете использовать Trino CLI, установленный непосредственно на вашей рабочей станции. URL сервера по умолчанию в CLI — http://localhost:8080 — соответствует порту, использованному в команде запуска контейнера. Более подробную информацию об использовании CLI можно найти в Интерфейс командной строки. Вы также можете подключиться с помощью любого другого клиентского приложения, используя Драйвер JDBC.
Настройка Trino#
Образ уже содержит конфигурацию по умолчанию для быстрого старта, а также
некоторые каталоги, позволяющие изучить Trino. Вы также можете использовать
контейнер со своими собственными конфигурационными файлами в локальной
структуре директории etc, как описано в Развертывание Trino.
Если при запуске контейнера смонтировать эту директорию как volume по пути
/etc/trino, будет использоваться ваша конфигурация вместо стандартной,
включённой в образ.
$ docker run --name trino -d -p 8080:8080 --volume $PWD/etc:/etc/trino trinodb/trino
Чтобы сохранить конфигурацию по умолчанию и настроить только каталоги,
смонтируйте папку в /etc/trino/catalog или отдельные файлы свойств
каталогов в эту директорию.
Если вы хотите использовать дополнительные plugins, смонтируйте их в
/usr/lib/trino/plugin.
Чтобы не создавать файлы каталогов и не монтировать их в контейнер,
вы можете включить динамическое управление каталогами, установив
переменную окружения CATALOG_MANAGEMENT в значение dynamic.
$ docker run --name trino -d -p 8080:8080 -e CATALOG_MANAGEMENT=dynamic trinodb/trino
После подключения к Trino выполните инструкции Управление каталогами,
чтобы создавать и удалять каталоги по необходимости. Чтобы сохранить эти
изменения между перезапусками контейнера, необходимо смонтировать volume
в /etc/trino/catalog.
Очистка#
Вы можете останавливать и запускать контейнер с помощью команд
docker stop trino и docker start trino. Чтобы полностью удалить
остановленный контейнер, выполните docker rm trino.