作者:邹云鹤
用户背景
BIGO 是一家面向海外的以短视频直播业务为主的公司, 目前公司的主要业务包括 BigoLive (全球直播服务),Likee (短视频创作分享平台),IMO (免费通信工具) 三部分,在全球范围内拥有 4 亿用户。
业务需求
伴随着BIGO业务的发展,对数据平台处理能力的要求越来越高,平台所面临的问题也日益凸显。BIGO 大数据平台的数据流转图如下所示:
用户在 APP,Web 页面上的行为日志数据以及关系数据库的 Binlog 数据会被同步到 BIGO 大数据平台消息队列以及离线存储系统中,然后通过实时和离线的数据分析手段进行计算,以应用于实时推荐、监控、即席查询等使用场景。其中存在以下几个问题:
OLAP 分析平台入口不统一:Presto/Spark 分析任务入口并存,用户不清楚自己的 SQL 查询适合哪个引擎执行,盲目选择,体验不好;另外,用户会在两个入口同时提交相同查询以更快的获取查询结果,导致资源浪费;
离线任务计算时延高,结果产出太慢:典型的如 ABTest 业务,经常计算到下午才计算出结果;
各个业务方基于自己的业务场景独立开发应用,实时任务烟囱式的开发,缺少数据分层,数据血缘。
平台建设
基于业务需求和问题,BIGO 大数据平台建设了 OneSQL OLAP 分析平台,以及实时数仓。
通过 OneSQL OLAP 分析平台,统一 OLAP 查询入口,减少用户盲目选择,提升平台的资源利用率;
通过 Flink 构建实时数仓任务,通过 Kafka/Pulsar 进行数据分层;
将部分离线计算慢的任务迁移到 Flink 流式计算任务上,加速计算结果的产出;
此外通过建设实时计算平台 Bigoflow 管理这些实时计算任务,建设实时任务的血缘关系。
OneSQL OLAP 分析平台实践和优化
OneSQL OLAP 分析平台是一个集 Flink、Spark、Presto 于一体的 OLAP 查询分析引擎。用户提交的 OLAP 查询请求通过 OneSQL 后端转发到不同执行引擎的客户端,然后提交对应的查询请求到不同的集群上执行。其整体架构图如下:
该分析平台整体结构从上到下分为入口层、转发层、执行层、资源管理层。为了优化用户体验,减少执行失败的概率,提升各集群的资源利用率,OneSQL OLAP 分析平台实现了以下功能:
统一查询入口:入口层,用户通过统一的 Hue 查询页面入口以 Hive SQL 语法为标准提交查询;
统一查询语法:集 Flink、Spark、Presto 等多种查询引擎于一体,不同查询引擎通过适配 Hive SQL 语法来执行用户的 SQL 查询任务;
智能路由:在选择执行引擎的过程中,会根据历史 SQL 查询执行的情况 (在各引擎上是否执行成功,以及执行耗时),各集群的繁忙情况,以及各引擎对该 SQL 语法的是否兼容,来选择合适的引擎提交查询;
失败重试:OneSQL 后台会监控 SQL 任务的执行情况,如果 SQL 任务在执行过程中失败,将选择其他的引擎执行重试提交任务;
通过 OneSQL OLAP 分析平台,BIGO 大数据平台实现了 OLAP 分析入口的统一,减少用户的盲目选择,同时充分利用各个集群的资源,减少资源空闲情况。
《Apache Flink 案例集(2022版)》——2.数据分析——BIGO-BIGO使用Flink做OLAP分析及实时数仓的实践和优化(下)