
桔妹导读:Presto在滴滴内部发展三年,已经成为滴滴内部Ad-Hoc和Hive SQL加速的首选引擎。目前服务6K+用户,每天读取2PB ~ 3PB HDFS数据,处理30万亿~35万亿条记录,为了承接业务及丰富使用场景,滴滴Presto需要解决稳定性、易用性、性能、成本等诸多问题。我们在3年多的时间里,做了大量优化和二次开发,积攒了非常丰富的经验。本文分享了滴滴对Presto引擎的改进和优化,同时也提供了大量稳定性建设经验。
1. Presto简介
▍1.1 简介
Presto是Facebook开源的MPP(Massive Parallel Processing)SQL引擎,其理念来源于一个叫Volcano的并行数据库,该数据库提出了一个并行执行SQL的模型,它被设计为用来专门进行高速、实时的数据分析。Presto是一个SQL计算引擎,分离计算层和存储层,其不存储数据,通过Connector SPI实现对各种数据源(Storage)的访问。
▍1.2 架构

Presto沿用了通用的Master-Slave架构,一个Coordinator,多个Worker。Coordinator负责解析SQL语句,生成执行计划,分发执行任务给Worker节点执行;Worker节点负责实际执行查询任务。Presto提供了一套Connector接口,用于读取元信息和原始数据,Presto 内置有多种数据源,如 Hive、MySQL、Kudu、Kafka 等。同时,Presto 的扩展机制允许自定义 Connector,从而实现对定制数据源的查询。假如配置了Hive Connector,需要配置一个Hive MetaStore服务为Presto提供Hive元信息,Worker节点通过Hive Connector与HDFS交互,读取原始数据。
▍1.3 实现低延时原理
Presto是一个交互式查询引擎,我们最关心的是Presto实现低延时查询的原理,以下几点是其性能脱颖而出的主要原因:
-
完全基于内存的并行计算
-
流水线
-
本地化计算
-
动态编译执行计划
-
小心使用内存和数据结构
-
GC控制
-
无容错
2. Presto在滴滴的应用
▍2.1 业务场景
-
Hive SQL查询加速
-
数据平台Ad-Hoc查询
-
报表(BI报表、自定义报表)
-
活动营销
-
数据质量检测
-
资产管理
-
固定数据产品

▍2.2 业务规模

▍2.3 业务增长

▍2.4 集群部署

目前Presto分为混合集群和高性能集群,如上图所示,混合集群共用HDFS集群,与离线Hadoop大集群混合部署,为了防止集群内大查询影响小查询, 而单独搭建集群会导致集

本文分享了滴滴内部Presto的使用情况,包括其作为Ad-Hoc查询和Hive SQL加速器的角色,服务大量用户并处理大规模数据。文章详细介绍了Presto的架构、低延时原理,以及滴滴在Presto上的优化和稳定性建设,如Hive SQL兼容、物理资源隔离、Druid Connector、易用性与稳定性改进等。此外,还探讨了未来优化方向,如解决资源浪费问题和计划升级到PrestoSQL 340版本。
最低0.47元/天 解锁文章
459

被折叠的 条评论
为什么被折叠?



