简介: 介绍了 37 手游为何选择 Flink 作为计算引擎,并如何基于 Flink CDC + Hudi 构建新的湖仓一体方案。
本文作者是 37 手游大数据开发徐润柏,介绍了 37 手游为何选择 Flink 作为计算引擎,并如何基于 Flink CDC + Hudi 构建新的湖仓一体方案,主要内容包括:
- Flink CDC 基本知识介绍
- Hudi 基本知识介绍
- 37 手游的业务痛点和技术方案选型
- 37 手游湖仓一体介绍
- Flink CDC + Hudi 实践
- 总结
GitHub 地址
GitHub - apache/flink: Apache Flink
欢迎大家给 Flink 点赞送 star~
一、Flink-CDC 2.0
Flink CDC Connectors 是 Apache Flink 的一个 source 端的连接器,目前 2.0 版本支持从 MySQL 以及 Postgres 两种数据源中获取数据,2.1 版本社区确定会支持 Oracle,MongoDB 数据源。
Fink CDC 2.0 的核心 feature,主要表现为实现了以下三个非常重要的功能:
- 全程无锁,不会对数据库产生需要加锁所带来的风险;
- 多并行度,全量数据的读取阶段支持水平扩展,使亿级别的大表可以通过加大并行度来加快读取速度;
- 断点续传,全量阶段支持 checkpoint,即使任务因某种原因退出了,也可通过保存的 checkpoint 对任务进行恢复实现数据的断点续传。
Flink CDC 2.0 详解核心改进
二、Hudi
Apache Hudi 目前被业内描述为围绕数据库内核构建的流式数据湖平台 (Streaming Data Lake Platform)。
由于 Hudi 拥有良好的 Upsert 能力,并且 0.10 Master 对 Flink 版本支持至 1.13.x,因此我们选择通过 Flink + Hudi 的方式为 37 手游的业务场景提供分钟级 Upsert 数据的分析查询能力。
三、37 手游的业务痛点和技术方案选型
1. 旧架构与业务痛点
1.1 数据实时性不够
- 日志类数据通过 sqoop 每 30min 同步前 60min 数据到 Hive;
- 数据库类数据通过 sqoop 每 60min 同步当天全量数据到 Hive;
- 数据库类数据通过 sqoop 每天同步前 60 天数据到 Hive。
1.2 业务代码逻辑复杂且难维护
- 目前 3