大数据开发都值得拥有一个Trino——Connect everything

2022-05-12 00:00:00 查询 开源 节点 配置 基金会

引言

AdHoc —— Connect Everything,是我给 Trino 的一个中肯的评价。
也希望通过它,让大家能够对Trino这样一个无比的、而且又有故事的MPP引擎印象深刻。本篇,不讲概念、也不讲原理,只想告诉大家,有一个它,
——也许,你过去看不到关于它铺天盖地的营销、宣传。
——也许,你过去觉得它应用场景不像Spark、Flink,那么丰富。
——也许,你觉得它不像Impala,那么快。但它的社区非常活跃,关注度也非常高。你认为它本没有的功能,但它其实已经有了。
——也许,你觉得它非Apache开源项目出身,但它出身Fackbook,不耽误它碾压大多数的Apache现有项目。也因为它,独立成立一个基金会。
——也许,你只傻傻地把它当成是数仓跑批的引擎。但没有人会忘记它的初衷,没有人阻碍它在全球范围的发展。

Trino,每一个大数据开发都值得拥有。


  • 引言
  • 前世今生
    • Presto
    • About Trino
  • 安装trino
    • 下载trino
    • 安装要求
    • 开始安装
    • 启动、关闭trino
    • 安装trino cli客户端
  • 使用Trino
    • 连接MySQL
    • 连接Hive
    • 将MySQL数据导入到Hive
    • 连接Kafka
  • 写在后

前世今生

相信有不少人没有听说过Trino,但绝大多数人都听说过Presto。一个基于JVM的MPP计算引擎。在介绍Trino之前,我们先来简单了解下Presto。我们来看看Presto的产品定位。然后,再来聊聊Trino。

Presto

简介

  • 我们维基百科,搜索Presto,你会看到如下。
  • Wikipedia上介绍说,Presto是一个高性能的、分布式的大数据SQL查询引擎。
  • Presto非常有特色的一点就是,它支持的数据源非常多。例如:Hadoop、AWS S3、Alluxio、MySQL、Cassandra、Kafka、ES、Kudu、MongoDB、MySQL等等。就是在市面能看到的存储,它基本上都支持。而对比Impala却没有支持这么多的组件。所以,Presto这个项目还是备受关注的,大家也都希望,通过一套引擎,就可以支持使用SQL查询这么多的组件。

历史

  • Presto诞生于Facebook,那时候Facebook的数据分析师们需要基于Hadoop建设的大型数据仓库来进行交互式查询。
  • 在没有Presto之前,大伙儿都是通过Hive基于PB级的数据仓库执行SQL,Hive的引擎是基于MapReduce的,它虽然能够完成定时跑批的任务,而且很稳定。但基于数据分析师交互式查询这种场景,速度是非常慢的。大伙儿都觉得非常慢。
  • 在这样的业务场景推动下,Presto诞生了。它的出现,就是要来填补交互式快速查询的空白。
  • 2013年11月,Facebook作为开源软件发布Presto。
  • Facebooke并没有将Presto捐赠给Apache软件基金会。并于2019年,Presto软件基金会成立,该基金会是一个非盈利组织,致力于推动Presto开源分布式SQL查询引擎。这时,Presto出现了两个分支:
    • 由Facebook维护的Presto DB
    • 由Presto软件基金会维护的Presto SQL

  • 2019年9月,Facebook将PrestoDB捐赠给Linux基金会,并成立了Presto基金会。比较尴尬的是,Presto的Fonder、PMC和Commit都没有被邀请到这个基金会。
  • 于是,2020年12月,Presto SQL更名为Trino。

很明显,这期间一定是Presto的开发团队和Facebook有很大的矛盾,然后分道扬镳。

Trino:扬帆起航

2020年12月,Presto的创始人联合几位主要贡献者联合发布了一篇文章。

  • 文章提到,从2012年开始,Presto是一个开源项目,开源是该项目的DNA。他们努力围绕Presto项目打造一个健康的开源社区和生态。
  • 事情的转折点在2018年,Facebook管理层希望对Presto项目进行更严格的控制,并让Facebook内部没有任何Presto开发经验的开发人员加入到项目中。这样几位Presto的主要贡献者非常不爽,所以,他们选择了离开Facebook,专注于让Presto称为一个开放、独立社区的项目。
  • 2019年,它们成立了Presto软件基金会,积极维护全球的Presto贡献者。并用了一张对比图,说明Presto比之前更加活跃。
  • 2019年,Facebook创建了一个竞争社区,并申请了Presto商标,成立了Presto基金会,并开始执行新商标。交涉无果后,Martin必须要更名Presto基金会。所以,就取了一个新的名字——Trino。

Martin它们做出这样的决定是多么无奈。开源社区是一片自由的净土,作为众多开源软件的用户,我相信Trino一定会有更好的未来。

关于Impala

2012年,另一款也非常有名的MPP SQL查询引擎也开始开发了,有很多人说它其实是Google F1的开源版本——Cloudera Impala。2012年10月,Impala公开发发布了一个beta测试版本,2013年5月,正式发布。可以说,Impala对于Hadoop社区来说是非常关键的,因为它不管带来了一个高性能的查询引擎。还发布了名为Parquet面向列的文件格式。2015年,发布了对Kudu存储的支持。

随后,Cloudera公司提议将Kudu与Impala一起捐赠给Apache软件基金会。Impala于2017年11月顺利毕业,称为Apache项目。

About Trino

我们根据Trino官网的Why Trino来给大家介绍下Trino的key feature。

快速查询

Trino是一个并行执行、分布式的查询引擎,通过Trino可以构建高效、低延迟的分析系统。

大规模部署

基于Trino可以查询EB级的数据湖、以及海量数据仓库。

标准SQL

基于标准ANSI SQL查询引擎,可以与TableAU、PowerBI、Superset等BI工具配合使用。

多种使用场景

可以支持多种场景:

  • 快速的Ad-Hoc
  • 海量小时级的批量查询
  • 亚秒级查询大规模数据的应用程序

就地分析

不需要复制数据,直接在hadoop、s3、cassandra、mysql等本地直接分析。

联合数据源查询

可以在Trino中查询多个系统的数据,例如:将MySQL的数据和Hive中的数据联合查询。

Runs anywhere

可以将Trino部署在本地集群、或者是云环境。

安装trino

下载trino

下载地址:https://repo1.maven.org/maven2/io/trino/trino-server/359/trino-server-359.tar.gz

安装要求

操作系统要求

  • 64位Linux系统
  • 为运行trino的用户提供足够的unlimit。包括trino能够打开的文件描述符,官方推荐以下配置:
vim /etc/security/limits.conf

trino soft nofile 131072
trino hard nofile 131072

相关文章