Trino — розподілена система запитів SQL з відкритим вихідним кодом, призначена для роботи з великими наборами даних, що розподілені по одному або кількох різнорідних джерелах даних.[3] Вона може обробляти дані які містять відкриті формати файлів даних, таких як ORC чи Parquet що знаходяться на різних джерелах даних, таких як HDFS, AWS S3, Google Cloud Storage або Azure Blob Storage[4], використовуючи Hive[5] і формати таблиць Iceberg[6] .
У січні 2019 року оригінальні творці Presto Мартін Траверсо, Дайн Сундстром і Девід Філліпс створили форк проекту Presto. Спочатку вони зберегли назву Presto та використовували веб-ідентифікатор PrestoSQL, щоб відрізнити його від оригінального проекту PrestoDB. Одночасно вони оголосили про Presto Software Foundation. Фонд є некомерційною організацією, яка просуває механізм розподілених SQL-запитів Presto з відкритим кодом.[8][9]
У грудні 2020 року PrestoSQL було перейменовано в Trino. Trino Software Foundation, кодова база та всі інші активи PrestoSQL були перейменовані в рамках ребрендингу.[10]
Presto та Trino спочатку були розроблені Мартіном, Дейном, Девідом і Еріком Хванг з Facebook, щоб дозволити аналітикам даних виконувати інтерактивні запити до великого сховища даних у Apache Hadoop . Trino розділяє перші шість років розробки з проектом Presto.[11][12] Щоб дізнатися більше про попередню історію Trino, ви можете звернутися до розділу історії Presto .
Архітектура
Огляд архітектури Trino з координатором і працівниками[13]
Trino написано мовою Java .[14] Він містить два типи вузлів: координатор і воркер .[13]
Координатор відповідає за парсинг, аналіз, оптимізацію, планування та підготовкою до виконання, надісланого клієнтом. Координатор взаємодіє з інтерфейсом постачальника послуг (SPI), щоб отримати доступні таблиці, статистику таблиць та іншу інформацію, необхідну для виконання своїх завдань.[13]
Воркери несуть відповідальність за виконання завдань і операторів, переданих їм планувальником. Ці завдання обробляють рядки з джерел даних, які дають результати, що повертаються координатору та, зрештою, назад клієнту.[13]
Trino підтримує поділ обчислень і сховищ[4] і може бути розгорнуто як на власних серверах, так і в хмарі .[15]
Trino має архітектуру розподілених обчисленьMPP .[13]
Trino спочатку розподіляє роботу між кількома воркерами, запускаючи спеціальні операції розділення або покладаючись на існуючі розділи в даних основного сховища даних. Після того, як ці дані досягають воркер, вони обробляються за допомогою конвеєрних операторів, які виконуються в кількох потоках.[13]
↑Traverso, Martin; Sundstrom, Dain; Phillips, David (27 грудня 2020). We're rebranding PrestoSQL as Trino. trino.io(англ.). Процитовано 7 вересня 2021.
↑ абвгдеFuller, Matt; Moser, Manfred; Traverso, Martin (2021). Chapter 4. Trino Architecture. Trino: The Definitive Guide. O'Reilly Media, Inc, USA. с. 43—72. ISBN9781098107710.
↑Fuller, Matt; Moser, Manfred; Traverso, Martin (2021). Chapter 2. Installing and Configuring Trino. Trino: The Definitive Guide. O'Reilly Media, Inc, USA. с. 19—24. ISBN9781098107710.
↑Fuller, Matt; Moser, Manfred; Traverso, Martin (2021). Chapter 13. Real-World Examples. Trino: The Definitive Guide. O'Reilly Media, Inc, USA. с. 267—272. ISBN9781098107710.
Література
Fuller, Matt; Moser, Manfred; Traverso, Martin. Trino: the definitive guide: SQL at any scale, on any storage, in any environment (вид. First). Sebastopol: O'Reilly Media. ISBN9781098107710.