presto在字节跳动的应用

过往记忆 过往记忆     2023-02-27     748

关键词:


本文资料来自2021年12月09日举办的 PrestoCon 2021,议题为《Presto at Bytedance》,分享者常鹏飞,字节跳动软件工程师。Presto 在字节跳动中得到了广泛的应用,如数据仓库、BI工具、广告等。与此同时,字节跳动的 presto 团队也提供了许多重要的特性和优化,如 Hive UDF Wrapper、多个协调器、运行时过滤器等,扩展了 presto 的用法,增强了 presto 的稳定性。

关注 过往记忆大数据公众号回复 10099 获取本文资料。

Presto 在字节跳动 OLAP 平台的状况

上面是字节跳动计算平台的状况。可以看到,Spark SQL 主要用于 ETL,Presto 处理 Ad-hoc 查询,而 Flink Streaming 处理流数据。

•Presto 在字节是从 2020 年开始使用的;

•当前数以万计的计算核心;•每天大约 100 万次查询;•覆盖 BI、Ad-hoc 等场景。

从右边的图可以看出,Presto 每天的查询量是往上增的趋势。

上图是字节跳动的 Presto 集群架构,所有查询都是先经过网关,然后发送到背后的不同 Presto 集群。

Presto 集群稳定性和性能提升

下面我们来看下字节跳动对 Presto 做的改进。

Presto 网关负责查询的路由和流量控制。其中:

•路由策略是基于规则的;•流量控制策略是基于集群负载。

网关负载利用这两个规则将用户的查询转发到不同的 Presto 集群。

为了高可用性,字节改造 Presto 集群,通过 ZK 实现了 Multi Coordinator。

同时,根据 Catalog 里面的统计信息,可以预估用户查询的运行时间,有些大查询可以直接拒绝。同时根据运行时统计信息,可以自动取消大查询。

为了分析历史查询,字节内部实现了历史服务器,其核心思想是通过 Coordinator 将查询的信息 dump 到持久化存储,然后 History Server 就可以分析相关历史查询。同时监控 Dashboard 也可以做一些监控相关的工作。

不同场景下的实践和优化

通过将 Hive/Spark SQL 迁移到 Presto 来加速 Ad-hoc 查询。主要做了以下方面的工作:

•Hive UDF Wrapper,其目的是使得 Presto 可以运行 Hive 的 UDF。代码已经开源了,参见:https://github.com/prestodb/presto/pull/16737 • 支持范围分区; • Hive 语义兼容,比如 array index, divide by zero etc. • 支持新语法:直接往 HDFS 插入数据;扩展 Hive insert 语法;

通过物化视图加速 BI 分析。

当来了新查询时,利用物化视图集重写查询。下面是两个使用物化视图集改写查询的例子:

通过 Hudi 数据源支持近实时数据分析。比如可以将 MySQL Binlog 和应用程序的日志发送到 Kafka,并通过两条流把数据持久化:通过 T+1 把数据写到 HDFS,然后经过 ETL 写入到 Hive 表供 Presto 服务查询。另外,通过 Spark/Flink Streaming 近实时的把数据写到 Hudi 表。

 目前 Presto 中的 Hudi 数据源是和 Hive 数据源写到一起的,为了更好的扩展性、可维护性以及性能。字节给 Presto 社区提了一个 Proposal,来将 Hudi 数据源拆分到单独的数据源。感兴趣的同学可以到 https://github.com/prestodb/presto/issues/17006 里面查看详情。

未来规划

presto在字节跳动的内部实践与优化

引言在字节跳动内部,Presto主要支撑了Ad-hoc查询、BI可视化分析、近实时查询分析等场景,日查询量接近100万条。功能性方面完全兼容SparkSQL语法,可以实现用户从SparkSQL到Presto的无感迁移;性能方面实现JoinReorder&#... 查看详情

邀请你参与字节跳动ume插件开发竞赛

UME是由字节跳动FlutterInfra团队出品和维护的Flutter应用内调试工具。通过在Flutter应用中加入UME工具,开发者们可以直接在应用内查看调试信息,而无需使用IDE和FlutterDevTools等工具。这将方便开发者们直接在应用内获取有用信息,... 查看详情

字节跳动嵌入式数据分析最佳实践

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群商业智能(BI)已经广泛被应用到用户实际业务过程中,如果BI作为独立应用平台应用,那么用户在日常使用业务系统(比如CRM/ERP/OA等)... 查看详情

字节跳动埋点数据流建设与治理实践

本文将介绍字节跳动在埋点数据流业务场景遇到的需求和挑战以及具体实践。文|石伟 来自字节跳动数据平台开发套件团队出品| 字节跳动数据平台埋点数据流埋点数据流在字节跳动埋点数据流主要处理的数据是埋点,埋点... 查看详情

字节跳动开源的,运行在macos上,专注于移动端研发的工具链应用

大家好,我是周刊菌。加入「码农周刊VIP会员」,一起牛起来!以下内容选自「码农周刊VIP会员」圈子,每日更新,精彩不断。码农周刊是什么?码农周刊是一份专为广大程序员、编程爱好者们打造的IT技术周刊。每周发送。2013... 查看详情

alluxio2022技术干货年终大赏

...】《Alluxio在蚂蚁集团大规模训练中的应用》2-【腾讯】《Presto+Alluxio在腾讯金融场景下的落地实践》3-【网易】《网易Impala+Alluxio稳定性保障和调优实践》4-【字节跳动】《数据湖在字节跳动的服务化实践》5-【MOMO】《Alluxio... 查看详情

一边裁员一边拓展,字节跳动增速放缓

流量增长放缓后,字节跳动需要靠投资寻找新的增长曲线。曾经增长猛如虎的字节跳动,如今也开始裁员调整了。近期,据多家媒体报道,字节跳动游戏和本地生活等多个业务都在裁员。可见,在各方因素影... 查看详情

火山引擎dataleap:揭秘字节跳动数据血缘架构演进之路

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群DataLeap是火山引擎数智平台VeDI旗下的大数据研发治理套件产品,帮助用户快速完成数据集成、开发、运维、治理、资产、安全等全套... 查看详情

字节跳动背后的音视频技术揭秘

在过去的一年中,我们可以看到多媒体特别是音视频技术的能力在严峻的挑战下,为各行各业带来了巨大的变化。疫情过后,又会有哪些多媒体新技术、新实践呈现在大众的视野当中?为行业的发展与应用带来哪... 查看详情

字节跳动在异构场景下的高可用建设实践

字节跳动有众多的APP和服务,如何用混沌工程的方式保证这些系统和服务的高可用?本文详细介绍了字节跳动混沌工程技术的演进和系统高可用建设实践。本文主要为大家介绍字节跳动在高可用建设上的一些思考和落地... 查看详情

字节跳动(今日头条)的题目真的难吗?

...都努力精进,并努力分享的主儿。今天给聊得话题是关于字节跳动笔试题难度的。在各种交流群了,总是能看到大家在说字节跳动的题目好难呀,4个编程题没有一个题AC。天天觉得大家好难呀,所以找了一些==字节跳动==关于自... 查看详情

揭秘字节跳动云原生sparkhistory服务uiservice

本文是字节跳动数据平台数据引擎SparkSQL团队针对SparkHistoryServer(SHS)的优化实践分享。*文|字节跳动数据平台—数据引擎—SparkSQL团队*在字节跳动内部,我们实现了一套全新的云原生SparkHistory服务——UIService,相比开源的SHS,UIServ... 查看详情

flutter字节跳动穿山甲广告插件发布-flutterads(代码片段)

前言Flutter已成为目前最流行的跨平台框架之一,在近期的几个大版本的发布中都提到了Flutter版本Google广告插件[google_mobile_ads]。对于“出海”应用选择官方的插件非常稳定方便,对于国内的应用虽然我们的选择比较多ÿ... 查看详情

分布式链路追踪在字节跳动的实践

综述字节跳动在发展过程中,逐渐形成了十分复杂的超大规模微服务体系,对后端整体的可观测性解决方案提出了极高的要求。为了解决这个问题,基础架构智能运维团队自研链路追踪系统,将海量Metrics/Trace/Log数据进行整合与... 查看详情

成功拿到字节跳动offer,成功入职阿里

RPC概述RPC(RemoteProcedureCall)即远程过程调用,允许一台计算机调用另一台计算机上的程序得到结果,而代码中不需要做额外的编程,就像在本地调用一样。现在互联网应用的量级越来越大,单台计算机的能力有限... 查看详情

一年40万次实验,字节跳动a/b测试平台是怎么炼出来的?

2012年,刚刚建立的字节跳动便开启了A/B测试之旅,随着今日头条、抖音、西瓜视频等全线业务的使用,将A/B测试应用在产品命名、交互设计、推荐算法、用户增长、广告优化和市场活动等各方面决策上。据今年4月字... 查看详情

去了字节跳动,回来聊一聊字节跳动的面试...(代码片段)

一、算法题一面:1.lc里最长上升子序列的变形题2.实现输入英文单词联想的功能二面:1.矩阵旋转,要求空间复杂度O(1)2.无序的数组的中位数。要求时间复杂度尽可能的小二、计算机网络tcp怎么保证数据包有序主机每... 查看详情

字节跳动如何从0到1打造一个开源项目?

本文整理自51CTO开源基础软件学习季的直播公开课《字节跳动的开源实践与思考》 像很多公司一样,字节跳动接触开源也有一个从0到1、由浅入深的过程,大体经历三个阶段: 第一阶段,使用开源。为了推动业务更快发... 查看详情