Trino基础介绍

前言

前一段时间在负责公司的Trino版本的升级工作,从Trino403 升级到Trino446。准备在这里记录下前期的一些学习成果,大家一起学习进步哈。

Trino简介

前身是Presto(Facebook),在2020,由于项目治理和技术方向的差异,部分Presto核心开发人员和社区成员从Presto项目中分离出来,创建了一个名为Trino(原名PrestoSQL,由于版权问题改名)的新项目。Trino保留了Presto的核心功能和特点,并继续发展和改进。总结起来,Presto和Trino是同一个项目的不同版本和分支。Trino是在Presto项目的基础上演化而来的,保留了Presto的核心特性和目标,同时由一个独立的开发和维护团队进行管理。

Trino 概念

Trino是一个分布式SQL查询引擎,用于查询分布在一个或多个异构数据源上的大型数据集上。支持如Hadoop、S3、Cassandra、MySQL、PostgreSQL等数据源,并提供统一SQL 接口。可以在各种数据源上进行交互式查询,无需将数据移动到一个集中存储的地方。是一个典型的存算分离的 OLAP 引擎,采用了经典的 Master-Slave 架构,即 Coordinator+多个 Worker。

Trino 架构

Trino的架构主要包括以下几个组件:
在这里插入图片描述

Coordinator(协调器)

Coordinator 节点是整个 Trino 集群的入口点,负责接收和解析用户提交的 SQL 查询,并将查询的不同部分分发给其他 Worker 节点进行并行执行。Coordinator 节点还负责查询的优化和计划生成,以及结果的汇总和返回给用户。Coordinator和Worker之间使用REST API交流。

Worker(工作节点)

Worker 节点是执行实际查询计算的节点。它们接收来自 Coordinator 节点的任务,并在本地执行查询计算。Worker 节点可以是集群中的多个实例,每个实例都可以并行执行查询的不同部分。Worker 节点还负责将查询的结果返回给 Coordinator 节点进行汇总。Worker和Worker之间使用REST API交流。

Discovery(发现器)

Discovery 节点是 Trino 集群中的一种辅助节点,一般就Coordinator。用于协调 Coordinator 和 Worker 节点的发现和通信。它维护着整个集群的拓扑信息,并协助其他节点进行动态的节点发现和注册。Coordinator 和 Worker 之间会有定期的心跳检查(heartbeat),以确保各个 Worker 的健康状态和连接稳定。Worker 会定期向 Coordinator 发送心跳消息,汇报自己的状态和负载信息。

Connector(连接器)

负责与各种数据源交互。每个连接器支持不同类型的数据源,如Hadoop HDFS、关系数据库、NoSQL数据库等。通过配置不同的连接器,可以扩展Trino支持的数据源类型。 Trino允许对同一个connector配置多个catalog

Catalog(目录)

是组织数据源的逻辑结构,本质上就是各种数据源的Connector。通过Catalog去链接访问各种不同的数据源。一个Catalog可以包含多个Schema,每个Schema包含个table。

Schema(模式)

是一种组织表的方式。目录和模式共同定义了一组可以查询的表。当使用 Trino 访问 Hive 或关系数据库(如 MySQL)时,Schema其实就是数据库的概念。

Table(表)

就是任何关系数据库中的表的概念。在Trino里面通过Catalog.Schema.Table 定义唯一的一组数据。

Trino 优缺点

优点

  1. 高性能:Trino是为高性能而设计的,能够在大规模数据集上进行快速查询。支持内存中处理和多级并行计算,减少查询延迟。
  2. 多数据源支持:Trino能够查询多种类型的数据源,提供统一的SQL接口。无需将数据集中存储,可以直接在数据源上进行查询。
  3. 扩展性强:Trino的架构高度可扩展,能够轻松增加更多的Worker节点以提高查询性能。通过添加不同的连接器,可以支持更多的数据源。
  4. 社区活跃:Trino有一个活跃的开源社区,定期发布更新和新功能。
    提供详尽的文档和支持,方便用户和开发者上手使用。

缺点:

  1. 资源消耗大:由于Trino在内存中处理查询,需要大量的内存和计算资源。对于资源有限的环境,可能需要精细的资源管理和调优。
  2. 配置复杂:Trino的部署和配置需要一定的技术背景和经验。在多节点环境中,配置和管理集群需要花费较多的时间和精力。
  3. 查询优化复杂:虽然Trino提供了强大的查询优化功能,但在某些复杂查询场景下,可能需要手动调优查询计划。对于一些特定的数据源,优化策略可能需要根据实际情况进行调整。
  4. 生态系统集成:虽然Trino支持多种数据源,但与某些特定的数据存储和处理系统的集成可能需要额外的开发工作。在一些复杂的企业级应用中,可能需要与其他数据处理工具和平台进行深度集成。

总结

Trino是一款功能强大的分布式SQL查询引擎,能够高效地查询大规模数据集,并支持多种数据源。其高性能、多数据源支持和良好的扩展性使其在大数据分析和处理领域中广受欢迎。然而,由于其资源消耗大和配置复杂等缺点,用户在部署和使用时需要进行仔细的规划和调优。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值