Архитектура Trino

Обзор

Trino — это движок SQL-запросов с открытым исходным кодом, используемый для параллельной обработки данных, распределенных по хранилищам разного типа, таких как объектные хранилища (S3), базы данных и файловые системы.

Он был разработан для OLAP (Online Analytical Processing) и неэффективен для OLTP (Online Transaction Processing).

Все компоненты сервиса можно разместить на одном хосте. Несколько нод Trino, настроенные для совместной работы друг с другом, составляют кластер Trino.

Концепции

В Trino существуют следующие основные концепции:

  • Коннекторы

    Коннектор — это плагин Trino, который создает соединение с источником данных с помощью интерфейса поставщика услуг (Service Provider Interface, SPI). Один коннектор может использоваться для доступа к одному или нескольким источникам данных одного типа.

  • Каталог

    Каталог — это абстракция Trino для доступа к определенному источнику данных (например, базе данных MySQL). Он содержит настройки подключений, учетные данные, URL и т.д. Каждый каталог использует определенный коннектор, указанный в свойстве connector.name. Каталог содержит одну или несколько схем, которые также содержат объекты, такие как таблицы или представления. Больше информации о каталогах можно получить в статье Управление каталогами в Trino.

  • Схема

    Схема определяет данные, которые можно запросить. Для реляционной базы данных схема Trino повторяет схему в целевой базе данных, но для других источников данных схема может быть представлена ​​как другой тип организации таблиц.

  • Выражение (statement)

    Выражение в Trino — это текстовое представление оператора, написанного на SQL. При выполнении оператора Trino создает запрос и план запроса, которые реализуются как ряд взаимосвязанных этапов, выполняемых на рабочих узлах Trino.

  • Этап (stage)

    В Trino каждое выполнение запроса делится на несколько этапов, имеющих древовидную иерархию. Когда Trino собирает данные из хранилища, он создает корневой этап для агрегирования выходных данных других этапов, а те уже выполняют задачи распределенного плана самого запроса.

  • Задача (task)

    Задача Trino — это часть запроса, которая выполняется на сервере Trino Worker. Каждый этап выполнения может быть представлен несколькими задачами.

  • Сплит (split)

    Сплит — это небольшая часть целевого набора данных, обрабатываемая на раннем этапе выполнения запроса. При составлении плана выполнения запроса Trino Coordinator запрашивает у коннектора список всех сплитов, доступных для таблицы.

Компоненты

Архитектура Trino основана на следующих компонентах:

  • Trino Coordinator

    Координатор — это сервер Trino, обрабатывающий входящие запросы клиентов. Он управляет серверами Trino Worker, которые выполняют эти запросы. Координатор отслеживает какие узлы выполняют задачи и какие сплиты обрабатываются задачами.

  • Trino Worker

    Trino Worker — это сервер Trino, отвечающий за выполнение задач и обработку данных.

Архитектура Trino
Архитектура Trino
Архитектура Trino
Архитектура Trino

Кластер Trino состоит из одного сервера Trino Coordinator и нескольких Trino Worker. Вся коммуникация и передача данных между компонентами Trino происходит через HTTP/HTTPS.

Коннекторы

Trino содержит множество встроенных коннекторов для различных источников данных:

  • Озера и хранилища данных: HDFS, Hive, Iceberg и другие.

  • Реляционные базы данных: MariaDB, MySQL, PostgreSQL, Oracle, ADPG и т.д.

  • Другие системы и утилиты: Cassandra, ClickHouse, OpenSearch, Prometheus, Snowflake, JMX и т.д.

Дополнительную информацию о коннекторах можно получить в статье Обзор коннекторов в Trino.

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