大数据面试:面试官要求我了解过Presto——Presto到底是个什么东西

2021-08-10 10:48:11 浏览数 (1)

前言

大家好,我是程序员manor,我希望自己能成为国家复兴道路的铺路人,大数据领域的耕耘者,平凡但不甘于平庸的人。

事情是这样的

我在实习僧App上发现一家公司非常匹配我的需求~

城市匹配 技能匹配 福利匹配 还是一家游戏公司 (典型的钱多离家近,事估计少不了了 ) 三配下来我不得不认真研究该公司的职位要求

一番自我检查发现,竟然有一项大数据组件听都没听过:presto 这到底是个啥? 有什么用? 适合在哪些业务场景? 如此灵魂三问后,好学如本码农自当好好研究一番。

Presto是什么

1. Presto简介

  1. 1 Presto概念 Presto 是由 Facebook 开源的大数据分布式 SQL 查询引擎,适用于交互式分析查询,可支持众多的数据源,包括 HDFS,RDBMS,KAFKA 等,而且提供了非常友好的接口开发数据源连接器。数据规模可以支持GB到PB级,主要应用于处理秒级查询的场景。Presto 的设计和编写完全是为了解决像 Facebook 这样规模的商业数据仓库的交互式分析和处理速度的问题。

注意: 虽然 Presto 可以解析 SQL,但它不是一个标准的数据库。不是 MySQL、Oracle的代替品,也不能用来处理在线事务(OLTP)。

1.2 Presto 应用场景 Presto 支持在线数据查询,包括 Hive,关系数据库(MySQL、Oracle)以及专有数据存储。一条 Presto 查询可以将多个数据源的数据进行合并,可以跨越整个组织进行分析。

代码语言:javascript复制
    Presto 主要用来处理 响应时间小于 1 秒到几分钟的场景 。

1.3 Presto架构 在谈presto架构之前,先回顾下hive的架构

hive:client将查询请求发送到hive server,它会和metastor交互,获取表的元信息,如表的位置结构等,之后hive server会进行语法解析,解析成语法树,变成查询计划,进行优化后,将查询计划交给执行引擎,默认是MR,然后翻译成MR

presto:presto是在它内部做hive类似的逻辑

接下来,深入看下presto的内部架构

这里面三个服务: Coordinator,是一个中心的查询角色,它主要的一个作用是接受查询请求,将他们转换成各种各样的任务,将任务拆解后分发到多个worker去执行各种任务的节点 1、解析SQL语句 2、⽣成执⾏计划 3、分发执⾏任务给Worker节点执⾏ Worker,是一个真正的计算的节点,执行任务的节点,它接收到task后,就会到对应的数据源里面,去把数据提取出来,提取方式是通过各种各样的Connector: 负责实际执⾏查询任务

Discovery service,是将coordinator和woker结合到一起的服务: 1、Worker节点启动后向Discovery Server服务注册 2、Coordinator从Discovery Server获得Worker节点 coordinator和woker之间的关系是怎么维护的呢?是通过Discovery Server,所有的worker都把自己注册到Discovery Server上,Discovery Server是一个发现服务的service,Discovery Server发现服务之后,coordinator便知道在我的集群中有多少个worker能够给我工作,然后我分配工作到worker时便有了根据

最后,presto是通过connector plugin获取数据和元信息的,它不是⼀个数据存储引擎,不需要有数据,presto为其他数据存储系统提供了SQL能⼒,客户端协议是HTTP JSON

1.3 Presto与大数据OLAP引擎对比

  • Presto:内存计算,mpp架构
  • Druid:时序,数据放内存,索引,预计算
  • Spark SQL:基于Spark Core,mpp架构
  • Kylin:Cube预计算 (mpp架构即大规模并行处理结构)

Presto由于是基于内存的,而Hive是在磁盘上读写的,因此Presto比Hive快很多,但是由于是基于内存的计算当多张大表关联操作时易引起内存溢出错误。

1.4 Presto特点 (1)完全基于内存的并行计算

(2)流水线

(3)本地化计算

(4)动态编译执行计划

(5)小心使用内存和数据结构

(6)类BlinkDB的近似查询

(7)GC控制

(8)扩展性

扩展性是在设计Presto时的另一个要点。 Presto不仅可以访问HDFS,也可以操作不同的数据源,包括:RDBMS和其他的数据源(例如:Cassandra)。目前已经 被支持的RDBMS有:MySQL、SQLServer、PostgreSQL等。

1.5 官网变化 就在 2020 年 12 月 27 日,prestosql 与 facebook 正式分裂,并改名为trino。分裂之前和之后的官网分别是:https://prestosql.io/ 和 https://trino.io。

参考文章:

https://blog.csdn.net/weixin_44318830/article/details/114339496

这篇文章全面的介绍了Presto从介绍到跑起第一行代码,从Presto的简介,安装部署,命令行 Client 的安装,基本使用,可视化客户端的安装与基本使用,以及使用任何一个组件我们都很注重的优化都讲的非常清楚了,珠玉在前,我也就不重复造轮子了。

需要做一点补充的是,我在油管爬了官方的Presto的介绍视频 并上传了双语机翻字幕 感兴趣的,可以到B站看一看~

Presto简要介绍及Presto上运行SQL

小结

本篇内容为大家介绍的是关于Presto到底是个什么东西,希望大家看完之后能够有所收获!你知道的越多,你不知道的也越多,我是manor,我们下一期见!

0 人点赞