溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道

發(fā)布時間:2021-11-09 18:35:44 來源:億速云 閱讀:227 作者:柒染 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

一篇在Bangalore Hadoop Meetup上分享的使用Apache Hudi和Debezium構(gòu)建CDC管道,分享者是Apache Hudi社區(qū)活躍貢獻者Pratyaksh。

如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道

如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道

CDC(CHANGE DATA CAPTURE):是一種軟件設(shè)計模式,用于確定和跟蹤已變更的數(shù)據(jù),以便可以對更改后的數(shù)據(jù)采取措施,一個簡單的示例是捕獲MySQL變更的記錄,然后導(dǎo)入數(shù)據(jù)湖。

如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道

業(yè)務(wù)部門要求獲取業(yè)務(wù)洞察力;服務(wù)所有者隨著時間的推移要求驗證記錄的每個版本,數(shù)據(jù)工程師要求建立維護成本低的管道以從事務(wù)處理系統(tǒng)(MySQL, Postgres,Cassandra,Mongo)到分析系統(tǒng)(HDFS)CDC具有低延遲。CDC具有如下優(yōu)勢,事件處理,實時分析和展示板,審計日志,24小時負(fù)載工作。

如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道

對于CDC有不同的方案,如基于日志的Debezium和基于查詢的JDBC Connector,如Sqoop,大多數(shù)公司在使用Sqoop來處理數(shù)據(jù),處理數(shù)據(jù)源的模式變更并處理文件存儲格式,但很難處理CSV等格式。

如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道

在過去,考慮到必須放棄開放性和社區(qū)支持,我們因此使用了Maxwell。

只要避免高頻流處理,NiFi是一個很好的數(shù)據(jù)流工具,它具有很高的IO,因此磁盤可能成為瓶頸并且沒有數(shù)據(jù)冗余,所以應(yīng)該配置AWS EBS,此外,我們還必須給CatpureChangeMySql處理器打patch以便處理內(nèi)存緩沖。

Debezium是一個得到了redhat支持的活躍項目。它基于KafkaConnect構(gòu)建,并支持SQL和NOSQL數(shù)據(jù)庫,它通過合并SQL info模式和Alter語句來更新已緩存的模式。

Bootstrap:由于binlog/WAL不會保留太久,因此是在首次啟動時會處理整個數(shù)據(jù)庫快照。

如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道

Databricks最近開源的Delta.io(前不久才支持Presto和Authena。Uber開源Apache hudi,存儲格式只具有重寫拆分功能(Athena)的parquet文件輸入格式。Parquet格式-看起來有爭議-但Spark社區(qū)(DS)的文件格式演變更好。Hive–盡管獲得LLAP支持,但感覺仍然很慢(MR,TEZ)

如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道

系統(tǒng)整體架構(gòu)如下,數(shù)據(jù)庫可以是SQL或NOSQL,BinLog和WAL。整個服務(wù)運行在Kubernetes上,我們構(gòu)建了抽象層來支持Debezium的NRT需求–因為新鮮度總是伴隨著更高的成本。Batch和DB的JDBC,但不支持獲取變更日志。

如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道

Hudi代表Hadoop的更新,刪除和增量。也就是說,hudi提供了一個有效的平臺來進行數(shù)據(jù)提取,協(xié)調(diào)和查詢。對于數(shù)據(jù)提取和協(xié)調(diào),它會保留hudi鍵。

  • 重復(fù)數(shù)據(jù)刪除,同一記錄的多次更新需要轉(zhuǎn)到同一分區(qū)路徑。Hudi使用索引。(bloom或hbase)。

  • 如果存在,則標(biāo)記記錄的當(dāng)前位置 并傳入記錄。

  • 寫入時,會保持最小的hdfs文件大小,這也是在hudi中解決小文件問題的方式。

  • COW模式下,可以使用清理策略來清理所有過時的數(shù)據(jù)

  • 對于查詢,支持多個視圖–讀優(yōu)化視圖,實時視圖和增量視圖。

  • COW支持讀優(yōu)化視圖和增量視圖。

  • MOR支持所有這三種視圖。

如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道

下面是Apache Hudi的系統(tǒng)架構(gòu),使用Spark微批讀取數(shù)據(jù),并支持索引,可將表同步支持Hive Metasore中,同時對于查詢支持三種視圖。

如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道

使用Hudi時也存在如下挑戰(zhàn)

如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道

對于Hudi社區(qū)和Debezium社區(qū)已做如下貢獻

如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道

線路圖:如構(gòu)建用于編排的UI,數(shù)據(jù)分析UI、認(rèn)證鑒權(quán)相關(guān)等。

如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道

如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道

啟動hudi spark任務(wù)命令及Hive Metastore的屬性

如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道

Hudi中的清理策略配置

如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道

關(guān)于如何使用Apache Hudi和Debezium構(gòu)建健壯的CDC管道就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI