ChunJun框架在資料還原上的探索和實踐 | Hadoop Meetup精彩回顧
Hadoop 是 Apache 基金會旗下最知名的基礎架構開源專案之一。自 2006 年誕生以來,逐步發展成為海量資料儲存、處理最為重要的基礎元件,形成了非常豐富的技術生態。
作為國內頂尖的 Hadoop 開源生態技術峰會,第四屆 China Apache Hadoop Meetup 於 2022 年 9 月 24 日在上海成功舉辦。
圍繞 “雲數智聚 砥柱篤行” 的主題,來自華為、阿里、網易、位元組跳動、bilibili、平安銀行、袋鼠雲、英特爾、Kyligence、Ampere 等多所企業單位,以及來自 Spark、Fluid、ChunJun、Kyuubi、Ozone、IoTDB、Linkis、Kylin、Uniffle 等開源社群的多位嘉賓均參與了分享討論。
作為此次 Meetup 參與社群之一,也是大資料領域的專案,ChunJun 也帶來了一些新的聲音:
ChunJun 框架在實時資料採集和還原上的實現和原理是怎樣的?這段時間以來,ChunJun 有哪些新發展,對於未來發展又有著怎樣的新想法?
作為袋鼠雲資深大資料引擎開發專家,徐超帶來了他的分享,將從一個獨特的角度來介紹 ChunJun 資料整合在資料還原上的探索和實踐。
一、ChunJun 框架介紹
第一個問題:ChunJun 這個框架是什麼?能幹啥?
ChunJun (原 FlinkX) 是袋鼠雲基於 Flink 基座自研的資料整合框架,經過 4 年多的迭代,已經成為一個穩定,高效,易用的批流一體的資料整合工具,可實現多種異構資料來源高效的資料同步,目前已有 3.2K+Star。
開源專案地址:
https://gitee.com/dtstack_dev_0/chunjun
01 ChunJun 框架結構
ChunJun 框架基於 Flink 進行開發,提供了豐富的外掛,同時新增了斷點續傳、髒資料管理、資料還原等特性。
02 ChunJun 批次同步
・支援增量同步
・支援斷點續傳
・支援多通道 & 併發
・支援髒資料(記錄和控制)
・支援限流
・支援 transformer
03 ChunJun 離線
二、實時資料採集上的實現和原理
01 一個樣例
02 ChunJun 外掛裝載邏輯
03 ChunJun 外掛定義
04 ChunJun 資料流轉
05 ChunJun 動態執行
面對監聽多個表的情況,包括新新增表的資料,我們如何執行下游的寫入:
・支援 Update 轉換 before,after
・新增擴充套件引數,DB,Schema,Table, ColumnInfo
・支援動態構建 PreparedStatement
06 ChunJun 間隔輪詢
什麼是間隔輪詢?我們是如何做的?
・校驗輪詢欄位型別,如果不是數值型別且 source 並行度大於 1,報錯不支援
・建立三個資料分片,startlocation 為 null 或者配置的值,mod 分別為 0,1,2
・構造 SQL:不同 SQL 的取餘函式不同,各自外掛實現
select id,name,age from table where (id > ? and ) mod(id, 3) = 0 order by id;
select id,name,age from table where (id > ? and ) mod(id, 3) = 1 order by id;
select id,name,age from table where (id > ? and ) mod(id, 3) = 2 order by id;
・執行 SQL,查詢並更新 lastRow
・第一次 result 查詢完後,若指令碼中沒有配置 startlocation,則之前的查詢 SQL 為:
select id,name,age from table where mod(id, 3) = 1 order by id;
將其更新為:
select id,name,age from table where id > ? and mod(id, 3) = 1 order by id;
・CP 時獲取 lastRow 中的 id 值,儲存到 state 中
三、實時資料還原上的實現和原理
01 資料還原介紹
資料還原基於對應的資料庫的 CDC 採集功能,比如上面提到的 Oracle Logminer,MySQL binglog,支援將捕獲到的資料完整的還原到下游,所以不僅僅包括 DML,而且也需要對 DDL 進行監聽,將上游資料來源的所有變更行為傳送到下游資料庫的還原。
難點
・DDL,DML 如何有序的傳送到下游
・DDL 語句如何根據下游資料來源的特性進行對應的操作(異構資料來源間 DML 的轉換)
・DML 語句中的 insert update, delete 如何進行處理
02 一個樣例
03 整體流程
資料從上游的資料來源獲取之後經過一些列的運算元的處理之後按資料在原始表中的順序準確的還原到目標資料來源,完成資料的實時獲取鏈路。
04 DDL 解析
資料還原 - DDL 轉換
・基於 Calcite 解析資料來源 DdlSql 轉為 SqlNode
・SqlNode 轉為中間資料 DdlData
・ddlData 轉為 sql:不同語法之間互相轉換;不同資料來源欄位型別互相轉換
05 名字對映
在實時還原中,當前上下游表欄位對應關係必須是相同的,即上游的 database schema table 對應的表只能寫入下游 database schema table 相同的表,同時欄位名稱也必須是相同的。本次迭代將針對表路徑可以進行一個自定義對映以及欄位型別進行自定義對映。
・db or schema 轉換
・表名稱轉換
・欄位名 (提供大小寫轉換),型別隱式轉換
06 中間資料快取
資料(不論 ddl 還是 dml 資料)下發到對應表名下的 unblock 佇列中,worker 在輪詢過程中,處理 unblock 資料佇列中的資料,在遇到 ddl 資料之後,將資料佇列置為 block 狀態,並將佇列引用交給 store 處理。
store 在拿到佇列引用之後,將佇列頭部的 ddl 資料下發到外部儲存中,並監聽外部儲存對 ddl 的反饋情況(監聽工作由 store 中額外的執行緒來執行),此時,佇列仍然處於 block 狀態。
在收到外部儲存的反饋之後,將資料佇列頭部的 ddl 資料移除,同時將佇列狀態迴歸為 unblock 狀態,佇列引用還給 worker。
07 目標端接收資料
・獲取到 DdlOperator 物件
・根據目標資料來源對應的 DDLConvertImpl 解析器轉換為目標資料來源 sql
・執行對應的 sql, 比如刪除表
・觸發調整 DDLChange 表,修改對應的 DDL 狀態
・中間儲存 Restore 運算元,監聽狀態變更,執行後續資料下發操作
四、ChunJun 未來規劃
・提供對 Session 進行管理
・提供 restful 服務,ChunJun 本身作為一個服務,便於外圍系統進行整合
・對實時資料還原進行加強,包括擴充套件支援更多的資料來源的 DDL 解析
此外,本次分享的全文影片內容也可以隨時觀看,如果您有興趣,歡迎前往袋鼠雲 B 站平臺觀看。
Apache Hadoop Meetup 2022
ChunJun 影片回顧:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69995740/viewspace-2917575/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【FIW2022 精彩回顧】方正富邦基於超融合構建核心資料庫資源池的探索與實踐資料庫
- 關於成都 Gopher Meetup 的回顧Go
- 還原點和閃回資料庫資料庫
- “芯”有靈“蜥”,萬人線上!龍蜥社群走進 Intel MeetUp 精彩回顧Intel
- Python 2013 精彩回顧:新聞、好文和資源Python
- 精彩回顧:蘋果 WWDC 2022上不止有 iOS 16和新款 M2 版 MacBook,還有...蘋果iOSMac
- 42 位專家,12 場演講,龍蜥社群系統安全 MeetUp 精彩回顧來啦
- 基於開源流批一體資料同步引擎 ChunJun 資料還原 —DDL 解析模組的實戰分享
- 活動精彩回顧|GopherChina 2019乾貨回顧!Go
- 【高能慎點】7.26【J+】資料安全與行業實戰分享精彩回顧行業
- 關於學習.NET的歷程回顧與今後的探索實踐方向
- 公有云上構建雲原生 AI 平臺的探索與實踐 - GOTC 技術論壇分享回顧AIGo
- B 站構建實時資料湖的探索和實踐
- 網易數帆實時資料湖 Arctic 的探索和實踐
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-正常的還原點GUIIDE資料庫
- 開源直播課丨大資料整合框架ChunJun類載入器隔離方案探索及實踐大資料框架
- 資料庫治理的探索與實踐資料庫
- 【J+】產品創新之路與大資料下的日誌分析(精彩回顧)大資料
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-保證的還原點GUIIDE資料庫
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-閃回資料庫的限制GUIIDE資料庫
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-閃回資料庫GUIIDE資料庫
- 得物App資料模擬平臺的探索和實踐APP
- 一圖回顧 2021分散式資料庫開發者大會精彩看點分散式資料庫
- 「直播精彩回顧」釋放資料潛力,助力零售數智升級!
- 前端資料層的探索與實踐(一)前端
- 前端資料層的探索與實踐(二)前端
- 叮咚!請查收來自一線資料科學家和大資料工程師的實戰經驗| IDP Meetup No.02 回顧資料科學大資料工程師
- Backup And Recovery User's Guide-理解閃回資料庫、還原點和保證還原點GUIIDE資料庫
- 資料庫系統助力企業降本增效的技術要點|Meetup 回顧與預告資料庫
- ChunJun Meetup演講分享 | 基於袋鼠雲開源框架的數倉一體化建設探索框架
- 美團BERT的探索和實踐
- 精彩回顧 | Flutter Engage China 視訊合集Flutter
- 2018 Google 開發者大會精彩回顧Go
- 精彩回顧 | 2021 Android 開發者峰會Android
- 為資料安全護航,袋鼠雲在資料分類分級上的探索實踐
- Jepsen 測試框架在圖資料庫 Nebula Graph 中的實踐框架資料庫
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-閃回資料庫視窗GUIIDE資料庫
- 開源技術交流丨批流一體資料同步引擎 ChunJun 資料還原 - DDL 功能模組解析