如何使用ApacheHudi和Debezium构建健壮的CDC管道

这篇文章将为大家详细讲解有关如何使用Apache Hudi和Debezium构建健壮的CDC管道,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

网站设计制作、成都网站建设的关注点不是能为您做些什么网站,而是怎么做网站,有没有做好网站,给创新互联一个展示的机会来证明自己,这并不会花费您太多时间,或许会给您带来新的灵感和惊喜。面向用户友好,注重用户体验,一切以用户为中心。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 重复数据删除,同一记录的多次更新需要转到同一分区路径。Hudi使用索引。(bloom或hbase)。

  • 如果存在,则标记记录的当前位置 并传入记录。

  • 写入时,会保持最小的hdfs文件大小,这也是在hudi中解决小文件问题的方式。

  • COW模式下,可以使用清理策略来清理所有过时的数据

  • 对于查询,支持多个视图–读优化视图,实时视图和增量视图。

  • COW支持读优化视图和增量视图。

  • MOR支持所有这三种视图。

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

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

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

使用Hudi时也存在如下挑战

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

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

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

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

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

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

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

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

Hudi中的清理策略配置

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

关于如何使用Apache Hudi和Debezium构建健壮的CDC管道就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


分享标题:如何使用ApacheHudi和Debezium构建健壮的CDC管道
网页路径:http://csdahua.cn/article/goiejs.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流