使用Apache Hudi和Debezium构建健壮的CDC管道

简介: 使用Apache Hudi和Debezium构建健壮的CDC管道

一篇在Bangalore Hadoop Meetup上分享的使用Apache Hudi和Debezium构建CDC管道,分享者是Apache Hudi社区活跃贡献者Pratyaksh。

CDC(CHANGE DATA CAPTURE):是一种软件设计模式,用于确定和跟踪已变更的数据,以便可以对更改后的数据采取措施,一个简单的示例是捕获MySQL变更的记录,然后导入数据湖。

业务部门要求获取业务洞察力;服务所有者随着时间的推移要求验证记录的每个版本,数据工程师要求建立维护成本低的管道以从事务处理系统(MySQL, Postgres,Cassandra,Mongo)到分析系统(HDFS)CDC具有低延迟。CDC具有如下优势,事件处理,实时分析和展示板,审计日志,24小时负载工作。

对于CDC有不同的方案,如基于日志的Debezium和基于查询的JDBC Connector,如Sqoop,大多数公司在使用Sqoop来处理数据,处理数据源的模式变更并处理文件存储格式,但很难处理CSV等格式。

在过去,考虑到必须放弃开放性和社区支持,我们因此使用了Maxwell。

只要避免高频流处理,NiFi是一个很好的数据流工具,它具有很高的IO,因此磁盘可能成为瓶颈并且没有数据冗余,所以应该配置AWS EBS,此外,我们还必须给CatpureChangeMySql处理器打patch以便处理内存缓冲。

Debezium是一个得到了redhat支持的活跃项目。它基于KafkaConnect构建,并支持SQL和NOSQL数据库,它通过合并SQL info模式和Alter语句来更新已缓存的模式。

Bootstrap:由于binlog/WAL不会保留太久,因此是在首次启动时会处理整个数据库快照。

Databricks最近开源的Delta.io(前不久才支持Presto和Authena。Uber开源Apache hudi,存储格式只具有重写拆分功能(Athena)的parquet文件输入格式。Parquet格式-看起来有争议-但Spark社区(DS)的文件格式演变更好。Hive–尽管获得LLAP支持,但感觉仍然很慢(MR,TEZ)

系统整体架构如下,数据库可以是SQL或NOSQL,BinLog和WAL。整个服务运行在Kubernetes上,我们构建了抽象层来支持Debezium的NRT需求–因为新鲜度总是伴随着更高的成本。Batch和DB的JDBC,但不支持获取变更日志。

Hudi代表Hadoop的更新,删除和增量。也就是说,hudi提供了一个有效的平台来进行数据提取,协调和查询。对于数据提取和协调,它会保留hudi键。

  • 重复数据删除,同一记录的多次更新需要转到同一分区路径。Hudi使用索引。(bloom或hbase)。
  • 如果存在,则标记记录的当前位置 并传入记录。
  • 写入时,会保持最小的hdfs文件大小,这也是在hudi中解决小文件问题的方式。
  • COW模式下,可以使用清理策略来清理所有过时的数据
  • 对于查询,支持多个视图–读优化视图,实时视图和增量视图。
  • COW支持读优化视图和增量视图。
  • MOR支持所有这三种视图。

下面是Apache Hudi的系统架构,使用Spark微批读取数据,并支持索引,可将表同步支持Hive Metasore中,同时对于查询支持三种视图。

使用Hudi时也存在如下挑战

对于Hudi社区和Debezium社区已做如下贡献

线路图:如构建用于编排的UI,数据分析UI、认证鉴权相关等。

启动hudi spark任务命令及Hive Metastore的属性

Hudi中的清理策略配置

目录
相关文章
|
11天前
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
53 5
|
11天前
|
消息中间件 存储 监控
构建高可用性Apache Kafka集群:从理论到实践
【10月更文挑战第24天】随着大数据时代的到来,数据传输与处理的需求日益增长。Apache Kafka作为一个高性能的消息队列服务,因其出色的吞吐量、可扩展性和容错能力而受到广泛欢迎。然而,在构建大规模生产环境下的Kafka集群时,保证其高可用性是至关重要的。本文将从个人实践经验出发,详细介绍如何构建一个高可用性的Kafka集群,包括集群规划、节点配置以及故障恢复机制等方面。
38 4
|
30天前
|
消息中间件 分布式计算 大数据
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
56 5
|
1月前
|
存储 SQL 分布式计算
大数据-162 Apache Kylin 全量增量Cube的构建 Segment 超详细记录 多图
大数据-162 Apache Kylin 全量增量Cube的构建 Segment 超详细记录 多图
52 3
|
10天前
|
存储 数据挖掘 数据处理
巴别时代使用 Apache Paimon 构建 Streaming Lakehouse 的实践
随着数据湖技术的发展,企业纷纷探索其优化潜力。本文分享了巴别时代使用 Apache Paimon 构建 Streaming Lakehouse 的实践。Paimon 支持流式和批处理,提供高性能、统一的数据访问和流批一体的优势。通过示例代码和实践经验,展示了如何高效处理实时数据,解决了数据一致性和故障恢复等挑战。
95 61
|
30天前
|
Java 大数据 数据库连接
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
27 2
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
|
1月前
|
SQL 分布式计算 大数据
大数据-160 Apache Kylin 构建Cube 按照日期构建Cube 详细记录
大数据-160 Apache Kylin 构建Cube 按照日期构建Cube 详细记录
36 2
|
1月前
|
SQL 消息中间件 大数据
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
45 1
|
1月前
|
SQL 大数据 Apache
大数据-159 Apache Kylin 构建Cube 准备和测试数据(二)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(二)
72 1
|
30天前
|
SQL 存储 监控
大数据-161 Apache Kylin 构建Cube 按照日期、区域、产品、渠道 与 Cube 优化
大数据-161 Apache Kylin 构建Cube 按照日期、区域、产品、渠道 与 Cube 优化
43 0

推荐镜像

更多
下一篇
无影云桌面