阿里云 Flink+Hologres:构建企业级一站式实时数仓

本文介绍了阿里云Flink和Hologres在构建企业级实时数仓中的核心能力,包括Flink的全增量一体化同步、表结构变更自动同步、整库同步和分库分表合并同步,以及Hologres的高性能实时写入与更新、实时OLAP分析、在线服务和读写分离高可用等特性。通过Flink CDC和Hologres的结合,可以简化实时数仓的构建流程,提供低延迟、高性能的数据处理和分析,支持实时数据入仓、双流Join、宽表Merge和实时维表Lookup等应用场景。

作者|徐榜江 余文兵 赵红梅

随着大数据的迅猛发展,企业越来越重视数据的价值,这就意味着需要数据尽快到达企业分析决策人员,以最大化发挥数据价值。企业最常见的做法就是通过构建实时数仓来满足对数据的快速探索。在业务建设过程中,实时数仓需要支持数据实时写入与更新、业务敏捷快速响应、数据自助分析、运维操作便捷、云原生弹性扩缩容等一系列需求,而这就依赖一个强大的实时数仓解决方案。阿里云实时计算 Flink 版(以下简称“阿里云 Flink”)提供全增量一体化数据同步技术、强大的流式 ETL 等能力,支持海量数据实时入仓入湖。阿里云 Hologres 作为新一代实时数仓引擎能同时解决 OLAP 多维分析、在线服务、离线数据加速等多个业务查询场景,通过阿里云 Flink 与 Hologres 的强强结合,实现全链路的数据探索实时化、数据分析敏捷化,快速助力业务构建企业级一站式实时数仓,实现更具时效更智能的业务决策。

在本文中,我们将会介绍阿里云 Flink、阿里云 Hologres 在构建实时数仓上所具备的核心能力以及二者结合的最佳解决方案,用户通过阿里云 Flink+Hologres 实时数仓解决方案,可以显著降低数仓建设门槛,让数据发挥更大的价值,助力各行各业实现数字化升级。

Flink CDC 核心能力

Apache Flink 是开源的大数据流式计算引擎,支持处理数据库、Binlog、在线日志等多种实时数据,提供端到端亚秒级实时数据分析能力,并通过标准 SQL 降低实时业务开发门槛。伴随着实时化浪潮的发展和深化,Flink 已逐步演进为流处理的领军角色和事实标准,并蝉联 Apache 社区最活跃项目。

Flink CDC 是阿里云计算平台事业部 2020 年 7 月开源的一款数据集成框架,与 Flink 生态深度融合,具有全增量一体化、无锁读取、并发读取、分布式架构等技术优势,既可以替代传统的 DataX 和 Canal 工具做数据同步,也支持数据库数据实时入湖入仓,同时还具备强大的数据加工能力。

在构建实时数仓的过程中,数据采集是必需的组件。在传统的 ETL 架构里,采集层国外用户通常选择 Debezium,国内用户则习惯用 DataX 和 Canal,采集工具负责采集数据库的全量数据和增量数据。采集到的数据会输出到消息中间件如 Kafka,然后通过 Flink 计算引擎实时消费消息中间件数据做计算层的数据清洗和数据加工,加工完成后再写入目的端(装载层),通常是各种数据库、数据湖和数据仓库。在传统 ETL 链路中,数据采集工具与消息队列是比较重的组件,可能维护在不同的团队,在上游的数据源有业务变更或者这些组件需要升级维护时,整个链路的维护成本会非常大。

在这里插入图片描述

通过使用 Flink CDC 去替换上图中的数据采集组件与消息队列,将采集层(Extraction)和计算层(Transformation)合并,简化了整个 ETL 分析链路,用户可以使用更少的组件完成数据链路的搭建,整体架构带来更低的运维开销和更少的硬件成本、更好的数据链路稳定性、以及降低端到端的数据延迟。除了稳定性的提升,Flink CDC 的另一个优势就是用户只需要写 SQL 脚本就能完成 CDC 数据的清洗,加工和同步,极大地降低了用户使用门槛。

除全增量一体化同步能力外,阿里云 Flink CDC 还提供了表结构变更自动同步、整库同步、分库分表合并同步等诸多企业级特性,方便用户快速打通数据孤岛,实现业务价值。

1.1 全增量一体化同步

Flink CDC 通过增量快照读取算法在开源数据集成领域率先支持了无锁读取、并行读取、断点续传、不丢不重四个重要特性。其中无锁读取彻底解决了数据同步对上游业务数据库的死锁风险,并行读取很好地满足了海量数据同步的需求,断点续传和不丢不重特性则是提升了同步链路的稳定性和可靠性。

在这里插入图片描述

增量快照读取算法的核心思路就是在全量读取阶段把表分成一个个 chunk 进行并发读取,在进入增量阶段后只需要一个 task 进行单并发读取 Binlog 日志,在全量和增量自动切换时,通过无锁算法保障一致性。这种设计在提高读取效率的同时,进一步节约了资源,实现了全增量一体化的数据同步。配合阿里云实时计算产品提供的资源自动调优特性,Flink CDC 作业的资源可以做到自动扩缩容,无需手动介入。

1.2 表结构变更自动同步

随着业务的迭代和发展,数据源的表结构变更是经常会发生的操作。用户需要及时地去修改数据同步作业以适配最新的表结构,这一方面带来了较大的运维成本,也影响了同步管道的稳定性和数据的时效性。阿里云 Flink 支持通过 Catalog 来实现元数据的自动发现和管理,配合 CTAS (Create Table AS)语法,用户可以通过一行 SQL 实现数据的同步和表结构变更自动同步。

Flink SQL> USE CATALOG holo;
Flink SQL> CREATE TABLE user AS TABLE mysql.`order_db`.`user`;  

CTAS 语句会解析成一个 Flink 作业执行,这个 Flink 作业源头支持读取数据变更和表结构变更并同步到下游,数据和表结构变更都可以保证顺序,上述 CTAS 语句运行时结构变更同步的效果如下图所示。

在这里插入图片描述

示例如果在上游 MySQL 的 user 表中新增一列 age,并插入一条 id 为 27,年龄为 30 的记录。

MySQL> ALTER TABLE `user` ADD COLUMN `age` INT;
MySQL> INSERT INTO `user` (id, name, age) VALUES (27, 'Tony', 30);

user 表上的数据和结构变更都能实时地自动同步到下游 Hologres 的 user 表中,id 为 12,16 和 19 的历史数据,新增的列会自动补 NULL 值。

1.3 整库同步

在实时数仓构建中,用户经常需要将整个数据库同步到数仓中做进一步的分析,一张表一个同步作业的方式不但浪费资源,也会给上游数据库产生较大的压力。针对这类用户痛点,阿里云 Flink CDC 提供了整库同步特性。整库同步功能通过 CDAS (Create Database AS) 语法配合 Catalog 实现。

Flink SQL> USE CATALOG holo;
Flink SQL> CREATE DATABASE holo_order AS DATABASE
      mysql.`order_db` INCLUDING ALL TABLES;

例如 MySQL Catalog 和 Hologres Catalog 配合 CDAS 语法,可以完成 MySQL 到 Hologres 的全增量数据同步。CDAS 语句会解析成一个 Flink

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值