使用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中的清理策略配置

目录
相关文章
|
3天前
|
负载均衡 应用服务中间件 nginx
org.apache.catalina.connector.ClientAbortException: java.io.IOException: 断开的管道
org.apache.catalina.connector.ClientAbortException: java.io.IOException: 断开的管道
61 0
|
2天前
|
应用服务中间件 网络安全 Apache
构建高性能Web服务器:Nginx vs Apache
【5月更文挑战第16天】Nginx与Apache是两种主流Web服务器,各具优势。Nginx以其轻量级、高并发处理能力和反向代理功能见长,适合大型网站和高并发场景;而Apache以功能丰富、稳定性强闻名,适合企业网站和需要多种Web服务功能的场景。在性能上,Nginx处理高并发更优,Apache则可能在高负载时遭遇瓶颈。在选择时,应根据实际需求权衡。
|
3天前
|
消息中间件 存储 Java
深度探索:使用Apache Kafka构建高效Java消息队列处理系统
【4月更文挑战第17天】本文介绍了在Java环境下使用Apache Kafka进行消息队列处理的方法。Kafka是一个分布式流处理平台,采用发布/订阅模型,支持高效的消息生产和消费。文章详细讲解了Kafka的核心概念,包括主题、生产者和消费者,以及消息的存储和消费流程。此外,还展示了Java代码示例,说明如何创建生产者和消费者。最后,讨论了在高并发场景下的优化策略,如分区、消息压缩和批处理。通过理解和应用这些策略,可以构建高性能的消息系统。
|
3天前
|
消息中间件 API Apache
官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会
本文整理自阿里云开源大数据平台徐榜江 (雪尽),关于阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会。
1809 2
官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会
|
3天前
|
SQL Apache 流计算
Apache Flink官方网站提供了关于如何使用Docker进行Flink CDC测试的文档
【2月更文挑战第25天】Apache Flink官方网站提供了关于如何使用Docker进行Flink CDC测试的文档
348 3
|
3天前
|
Oracle 关系型数据库 流计算
flink cdc 同步问题之报错org.apache.flink.util.SerializedThrowable:如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
438 0
|
3天前
|
存储 SQL 分布式计算
使用Amazon EMR和Apache Hudi在S3上插入,更新,删除数据
使用Amazon EMR和Apache Hudi在S3上插入,更新,删除数据
150 0
|
3天前
|
存储 分布式计算 Hadoop
一文了解Apache Hudi架构、工具和最佳实践
一文了解Apache Hudi架构、工具和最佳实践
155 0
|
3天前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
722 5
|
3天前
|
SQL Java API
官宣|Apache Flink 1.19 发布公告
Apache Flink PMC(项目管理委员)很高兴地宣布发布 Apache Flink 1.19.0。
1794 2
官宣|Apache Flink 1.19 发布公告

热门文章

最新文章

推荐镜像

更多