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

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

导言

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

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

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

Paimon CDC

https://paimon.apache.org/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://www.mongodb.com/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://www.mongodb.com/try/download/shell

并启动:

./mongosh

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

rs.initiate()

步骤三:

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

https://www.apache.org/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://repository.apache.org/snapshots/org/apache/paimon/paimon-flink-1.18/0.6-SNAPSHOT/

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

https://repo.maven.apache.org/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://repo1.maven.org/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://paimon.apache.org/docs/master/maintenance/write-performance/#asynchronous-compaction

步骤四:

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

https://spark.apache.org/downloads.html

下载 Paimon Spark 集成 Jar:

https://repository.apache.org/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

  • 微信公众号:Apache Paimon ,了解行业实践与最新动态
  • 官网:https://paimon.apache.org/ 查询文档和关注项目

10


更多内容

img


活动推荐

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

image.png

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/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日以线上峰会的形式与大家见面。
相关文章
|
存储 消息中间件 OLAP
基于 Flink+Paimon+Hologres 搭建淘天集团湖仓一体数据链路
本文整理自淘天集团高级数据开发工程师朱奥在Flink Forward Asia 2024的分享,围绕实时数仓优化展开。内容涵盖项目背景、核心策略、解决方案、项目价值及未来计划五部分。通过引入Paimon和Hologres技术,解决当前流批存储不统一、实时数据可见性差等痛点,实现流批一体存储与高效近实时数据加工。项目显著提升了数据时效性和开发运维效率,降低了使用门槛与成本,并规划未来在集团内推广湖仓一体架构,探索更多技术创新场景。
2065 3
基于 Flink+Paimon+Hologres 搭建淘天集团湖仓一体数据链路
|
10月前
|
存储 JSON 数据处理
Flink基于Paimon的实时湖仓解决方案的演进
本文源自Apache CommunityOverCode Asia 2025,阿里云专家苏轩楠分享Flink与Paimon构建实时湖仓的演进实践。深度解析Variant数据类型、Lookup Join优化等关键技术,提升半结构化数据处理效率与系统可扩展性,推动实时湖仓在生产环境的高效落地。
1240 1
Flink基于Paimon的实时湖仓解决方案的演进
|
10月前
|
存储 人工智能 监控
淘宝闪购基于Flink&Paimon的Lakehouse生产实践:从实时数仓到湖仓一体化的演进之路
本文整理自淘宝闪购(饿了么)大数据架构师王沛斌在 Flink Forward Asia 2025 上海站的分享,深度解析其基于 Apache Flink 与 Paimon 的 Lakehouse 架构演进与落地实践,涵盖实时数仓发展、技术选型、平台建设及未来展望。
1666 0
淘宝闪购基于Flink&Paimon的Lakehouse生产实践:从实时数仓到湖仓一体化的演进之路
|
SQL 存储 NoSQL
Flink x Paimon 在抖音集团生活服务的落地实践
本文整理自抖音集团数据工程师陆魏与流式计算工程冯向宇在Flink Forward Asia 2024的分享,聚焦抖音生活服务业务中的实时数仓技术演变及Paimon湖仓实践。文章分为三部分:背景及现状、Paimon湖仓实践与技术优化。通过引入Paimon,解决了传统实时数仓开发效率低、资源浪费、稳定性差等问题,显著提升了开发运维效率、节省资源并增强了任务稳定性。同时,文中详细探讨了Paimon在维表实践、宽表建设、标签变更检测等场景的应用,并介绍了其核心技术优化与未来规划。
1345 10
Flink x Paimon 在抖音集团生活服务的落地实践
|
SQL API Apache
Dinky 和 Flink CDC 在实时整库同步的探索之路
本次分享围绕 Dinky 的整库同步技术演进,从传统数据集成方案的痛点出发,探讨了 Flink CDC Yaml 作业的探索历程。内容分为三个部分:起源、探索、未来。在起源部分,分析了传统数据集成方案中全量与增量割裂、时效性低等问题,引出 Flink CDC 的优势;探索部分详细对比了 Dinky CDC Source 和 Flink CDC Pipeline 的架构与能力,深入讲解了 YAML 作业的细节,如模式演变、数据转换等;未来部分则展望了 Dinky 对 Flink CDC 的支持与优化方向,包括 Pipeline 转换功能、Transform 扩展及实时湖仓治理等。
1606 12
Dinky 和 Flink CDC 在实时整库同步的探索之路
|
SQL 消息中间件 Kafka
Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
本文介绍了阿里云实时数仓Hologres负责人姜伟华在Flink Forward Asia 2024上的分享,涵盖实时数仓的发展历程、从实时数仓到实时湖仓的演进,以及总结。文章通过三代实时数仓架构的演变,详细解析了Lambda架构、Kafka实时数仓分层+OLAP、Hologres实时数仓分层复用等方案,并探讨了未来从实时数仓到实时湖仓的演进方向。最后,结合实际案例和Demo展示了Hologres + Flink + Paimon在实时湖仓中的应用,帮助用户根据业务需求选择合适的方案。
2015 20
Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
|
存储 运维 监控
阿里妈妈基于 Flink+Paimon 的 Lakehouse 应用实践
本文总结了阿里妈妈数据技术专家陈亮在Flink Forward Asia 2024大会上的分享,围绕广告业务背景、架构设计及湖仓方案演进展开。内容涵盖广告生态运作、实时数仓挑战与优化,以及基于Paimon的湖仓方案优势。通过分层设计与技术优化,实现业务交付周期缩短30%以上,资源开销降低40%,并大幅提升系统稳定性和运营效率。文章还介绍了阿里云实时计算Flink版的免费试用活动,助力企业探索实时计算与湖仓一体化解决方案。
1548 3
阿里妈妈基于 Flink+Paimon 的 Lakehouse 应用实践
|
存储 关系型数据库 MySQL
Flink基于Paimon的实时湖仓解决方案的演进
本文整理自阿里云智能集团苏轩楠老师在Flink Forward Asia 2024论坛的分享,涵盖流式湖仓架构的背景介绍、技术演进和未来发展规划。背景部分介绍了ODS、DWD、DWS三层数据架构及关键组件Flink与Paimon的作用;技术演进讨论了全量与增量数据处理优化、宽表构建及Compaction操作的改进;发展规划则展望了Range Partition、Materialized Table等新功能的应用前景。通过这些优化,系统不仅简化了复杂度,还提升了实时与离线处理的灵活性和效率。
1282 3
Flink基于Paimon的实时湖仓解决方案的演进
|
SQL 存储 HIVE
鹰角基于 Flink + Paimon + Trino 构建湖仓一体化平台实践项目
本文整理自鹰角网络大数据开发工程师朱正军在Flink Forward Asia 2024上的分享,主要涵盖四个方面:鹰角数据平台架构、数据湖选型、湖仓一体建设及未来展望。文章详细介绍了鹰角如何构建基于Paimon的数据湖,解决了Hudi入湖的痛点,并通过Trino引擎和Ranger权限管理实现高效的数据查询与管控。此外,还探讨了湖仓一体平台的落地效果及未来技术发展方向,包括Trino与Paimon的集成增强、StarRocks的应用以及Paimon全面替换Hive的计划。
2042 1
鹰角基于 Flink + Paimon + Trino 构建湖仓一体化平台实践项目
|
存储 运维 BI
万字长文带你深入广告场景Paimon+Flink全链路探索与实践
本文将结合实时、离线数据研发痛点和当下Paimon的特性,以实例呈现低门槛、低成本、分钟级延迟的流批一体化方案,点击文章阅读详细内容~

相关产品

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

    更多