《Apache Flink 案例集(2022版)》——2.数据分析——BIGO-BIGO使用Flink做OLAP分析及实时数仓的实践和优化(上) https://developer.aliyun.com/article/1228256
实时数仓建设和优化
为了提升 BIGO 大数据平台上某些业务指标的产出效率,以及更好的管理 Flink 实时任务,BIGO 大数据平台建设了实时计算平台 Bigoflow,并将部分计算慢的任务迁移到实时计算平台上,通过 Flink 流式计算的方式来执行,通过消息队列 Kafka/Pulsar 来进行数据分层,构建实时数仓;在 Bigoflow 上针对实时数仓的任务进行平台化管理,建立统一的实时任务接入入口,并基于该平台管理实时任务的元数据,构建实时任务的血缘关系。
BIGO 大数据平台主要基于 Flink + ClickHouse 建设实时数仓,大致方案如下:
按照传统数据仓库的数据分层方法,将数据划分成 ODS、DWD、DWS、ADS 等四层数据:
ODS 层:基于用户的行为日志,业务日志等作为原始数据,存放于 Kafka/Pulsar 等消息队列中;
DWD 层:这部分数据根据用户的 UserId 经过 Flink 任务进行聚合后,形成不同用户的行为明细数据,保存到 Kafka/Pulsar 中;
DWS 层:用户行为明细的 Kafka 流表与用户 Hive/MySQL 维表进行流维表 JOIN,然后将 JOIN 之后产生的多维明细数据输出到 ClickHouse 表中;
ADS 层:针对 ClickHouse 中多维明细数据按照不同维度进行汇总,然后应用于不同的业务中。
应用场景
Onesql OLAP分析平台在公司内部主要应用于 AdHoc 查询。用户通过 Hue 页面提交的 SQL,通过 OneSQL 后端转发给 Flink SQL Gateway,并提交到 Flink Session 集群上执行查询任务,Flink SQL Gateway 获取查询任务的执行进度返回给 Hue 页面,并返回查询结果。
实时数据仓库应用场景目前主要是 ABTest 业务。用户的原始行为日志数据经过 Flink 任务聚合后生成用户明细数据,然后与维表数据进行流维表 JOIN,输出到 ClickHouse 生成多维明细宽表,按照不同维度汇总后,应用于不同的业务。通过改造 ABTest 业务,将该业务的结果指标的生成时间提前了 8 个小时,同时减少了使用资源一倍以上。
未来规划
为了更好的建设 OneSQL OLAP 分析平台以及 BIGO 实时数据仓库,BIGO实时计算平台的规划如下:
完善 Flink OLAP 分析平台,完善 Hive SQL 语法支持,以及解决计算过程中出现的 JOIN 数据倾斜问题;
完善实时数仓建设,引入数据湖技术,解决实时数仓中任务数据的可重跑回溯范围小的问题; 基于 Flink 打造流批一体的数据计算平台。