大数跨境
0
0

干货|Presto在字节跳动的内部实践与优化(二)

干货|Presto在字节跳动的内部实践与优化(二) 字节跳动数据平台
2021-12-22
0
导读:Presto 在字节跳动内部三个不同场景的实践案例。


在字节跳动内部,Presto 主要支撑了Ad-hoc查询、BI可视化分析、近实时查询分析等场景,日查询量接近100万条。本文是《Presto在字节跳动的内部实践与优化》系列文章的连载之二,由字节跳动数据平台Presto团队软件工程师常鹏飞在PrestoCon 2021大会上的分享整理,核心提炼了三个场景中的优化与实践。

第一部分可以点击阅读

图注:PrestoCon 2021

LAS

Ad-hoc查询分析场景

2020年之前,大数据场景下的ad-hoc查询主要由Hive/SparkSQL来支撑。为了进一步优化查询性能,提高资源使用效率,从2020年开始,我们在生产环境大规模使用Presto
与SparkSQL相比,Presto是一个常驻的MPP架构的SQL查询引擎,避免了Spark Context启动以及资源申请的开销,端到端延迟较低。
与Hive/Spark Thrift Server相比,Presto Coordinator更加成熟,轻量,稳定,同时Presto基于全内存的Shuffle模型可以有效的降低查询延迟。
为了做到用户查询无感迁移到Presto,我们做了大量的工作使得Presto在语法和语义层面兼容SparkSQL。

在接入层方面提供了SQL标准化改写功能。该功能可以将用户的SQL改写成Presto可以支持的SQL语法进行执行,做到了底层引擎对用户透明。
在函数支持方面在Presto中支持了Hive UDF的执行,使得之前数据分析师积累下来的大量UDF可以在Presto中执行。该功能主要支持了在解析阶段可以加载Hive UDF和UDAF,并进行类型转换使其适配Presto类型体系,最终封装成Presto内置函数的形式进行执行。目前该功能部分已经贡献回了Presto社区。


https://github.com/prestodb/presto/pull/16737


LAS

BI可视化分析场景
Presto在字节跳动应用的另一个比较重要的场景是BI可视化分析。
BI可视化分析提供了可视化交互的功能来进行数据分析,数据分析可以直观快速的进行数据分析并生成相应的分析图表,这给查询引擎提出了更高的要求。在这一场景下,不仅,QPS大幅提高,同时还要求查询引擎能给出比较低的查询延迟。
为了应对这些挑战,我们做了一个比较重要的工作——在Presto中引入了物化视图
这种场景下,查询SQL往往都是由BI可视化平台根据固定的模版自动生成的,用户的可视化操作往往限于对查询过滤条件,聚合维度以及聚合指标的改变,适合物化视图的应用。

在物化视图功能中,我们借鉴了很多传统数据库的经验,工作主要涉及三方面的工作:
物化视图的自动挖掘——主要根据用户查询的历史记录进行分析,统计不同数据的查询频率进行物化视图的自动推荐与创建。
物化视图的生命周期管理——主要维护分区级别物化视图的自动更新,删除。
物化视图的重写功能——基于已有的物化视图,对用户的query进行重写以减少查询执行的复杂度。


LAS

近实时场景的查询分析

这是今年开始探索的一个场景,主要是为了降低数据链路的延迟,提升查询分析的时效性。
传统的基于ETL的数据链路中,业务数据和日志数据经由Kafka定期dump到HDFS,然后会有多个ETL任务对数据进行加工清理形成不同层级的Hive表用来进行查询分析。
这个链路中往往需要进行表数据的全量更新,任务比较重,与线上数据存在1天以上的数据延迟。
为了降低数据延迟,我们引入了Hudi来进行数据的增量更新。

在这个链路中,业务数据和日志数据经由Spark/Flink Streaming任务增量写入到Hudi表中,数据分析师可以直接查询这部分数据。目前,该链路可以做到分钟级别的数据延迟。
我们在Presto的优化工作主要是将Hudi表读取的功能从Hive Connector中提取出来成为了一个单独的Hudi Connector。
首先Hudi Connector针对Hudi表的结构特点更好地支持了基于不同策略的分片调度算法,保证任务分配的合理性。
同时Hudi Connector优化了Hudi MOR表读取过程中的内存管理,避免了Worker节点OOM,提升了集群稳定性
最后Hudi Connector的引入降低了Hudi版本升级带来的工作量,可以更好的集成Hudi社区最新的功能。这部分功能我们将会逐步贡献回社区。

https://github.com/prestodb/presto/issues/17006


本文中介绍的字节跳动内部Presto功能优化,目前已通过火山引擎数据产品“湖仓一体分析服务”外部企业输出

湖仓一体分析服务 LAS(Lakehouse Analytics Service)是面向湖仓一体架构的Serverless数据处理分析服务,提供一站式的海量数据存储计算和交互分析能力,完全兼容 Spark、Presto、Flink 生态,帮助企业轻松完成数据价值洞察。

点击阅读原文,了解湖仓一体分析服务LAS


更多相关产品


火山引擎大数据研发治理套件DataLeap

一站式数据中台套件,帮助用户快速完成数据集成、开发、运维、治理、资产、安全等全套数据中台建设,帮助数据团队有效的降低工作成本和数据维护成本、挖掘数据价值、为企业决策提供数据支撑。后台回复数字“2”了解产品


火山引擎E-MapReduce

支持构建开源 Hadoop 生态的企业级大数据分析系统,完全兼容开源,提供 Hadoop、Spark、Hive、Flink 集成和管理,帮助用户轻松完成企业大数据平台的构建,降低运维门槛,快速形成大数据分析能力。后台回复数字“3”了解产品


- End -

【声明】内容源于网络
0
0
字节跳动数据平台
字节跳动数据平台团队,赋能字节跳动各业务线,降低数据应用的门槛为始,以建立数据驱动的智能化企业,赋能各行业的数字化转型,创造更大的社会价值为终。对内支持字节绝大多数业务线,对外发布了火山引擎品牌下的数据智能产品,服务行业企业客户。
内容 217
粉丝 0
字节跳动数据平台 字节跳动数据平台团队,赋能字节跳动各业务线,降低数据应用的门槛为始,以建立数据驱动的智能化企业,赋能各行业的数字化转型,创造更大的社会价值为终。对内支持字节绝大多数业务线,对外发布了火山引擎品牌下的数据智能产品,服务行业企业客户。
总阅读99
粉丝0
内容217