奇點雲資料中臺技術匯(二)| DataSimba系列之資料採集平臺

StartDT發表於2019-05-21

繼上期資料中臺技術匯欄目釋出DataSimba——企業級一站式大資料智慧服務平臺,本期介紹DataSimba的資料採集平臺。

DataSimba採集平臺屬於DataSimba的資料計算及服務平臺的一部分, 負責資料的匯入, 從而支援上層的資料處理。  DataSimba的定位是面向企業私有化部署,決定了採集平臺面臨要解決的問題和傳統的網際網路公司不太一樣:

1、企業使用的資料庫型別多且雜, 包括很多非主流的資料庫;

2、企業的資料管理水平參差不齊, 依賴資料規範(如:維護列modify_time判斷記錄是否修改)的匯入方式推行困難;

3、需要支援的場景比較複雜, 包括:流處理、增量處理、批處理;

4、企業的資料平臺規模一般較小,資源有限, 需要更好的平衡計算成本與效率。


採集平臺總體架構

奇點雲資料中臺技術匯(二)| DataSimba系列之資料採集平臺


整個採集平臺核心為DataX與DataS兩個採集元件:

DataX:

·阿里開源的資料整合元件,透過jdbc,以查詢的方式支援通用的關係行資料庫匯入;

·DataSimba 同時支援嚮導模式和指令碼模式。

·可擴充套件支援NoSQL、FTP等。


DataS:

奇點雲針對複雜的企業資料環境開發的, 基於資料庫日誌(類似binlog)同步資料的工具, 主要特徵如下:

·配置簡單: 整庫匯入配置只需要一分鐘, 支援實時抽取、增量落盤、全量合併;

·基於資料庫Log採集, 以減少對企業現有系統的侵入。 目前支援Mysql, Sqlserver, Oracle, Postgres, MongoDB;

·支援多種業務場景, 包括:實時計算, 增量計算(10m~1h), 全量批處理(>1h);

·高效的資料合併效能, 節省計算資源;

·schema自動同步;


DataX vs DataS:

·DataX透過查詢(即Select)方式, 而DataS透過解析資料庫日誌;

·DataX 支援資料來源更廣, DataS支援資料來源較少(見下表);

·DataX 對資料來源壓力較大, 而DataS對資料來源壓力較小;

·DataX 需要資料來源有較大的空閒時間視窗, 用於抽取資料。 而DataS不需要;

·DataX 需要維護類似modify_time欄位做增量抽取, 而DataS不需要;

·DataX 無法跟蹤記錄變更過程, DataS可以跟蹤;

·DataX 不支援實時資料採集, DataS支援秒級的資料採集;

DataSimba在採集資料時優先使用DataS的方式。


為什麼要做DataS

早期的Simba使用DataX匯入資料, 在企業部署過程中遇到很多問題, 如:

·某快消企業, 資料庫本身的壓力就比較大, 且沒有大段的空閒視窗用於資料採集, 採用DataX抽取難度較大。

·某企業, 資料庫每日增量較少(~10GB), 但全量資料較大(>20T), 導致增量與全量合併的效率較低, 消耗資源比較多。

·某金融企業, 需要在數倉中跟蹤賬戶餘額的每一次變動, 又要不侵入現有的業務, 採用DataX的方式無法做到。

·某企業大屏, 需按小時重新整理, 統計資料量較大, 採用流式計算成本較高, 實現比較複雜。 採用DataX又無法做到小時以內的採集頻率。

以上只是在simba部署過程中碰到的一部分內容。 為了解決碰到的種種問題, 我們最終決定開發一套新的採集工具: DataS。

DataS 技術方案

DataS 的目標是: 配置維護簡單, 支援多種資料來源, 支援多種應用場景, 儘可能高效。

與cannal/maxwell等binlog採集工具相比, DataS支援更多的資料庫型別:

奇點雲資料中臺技術匯(二)| DataSimba系列之資料採集平臺

實時採集資料流程

實時採集的主要流程如下:

1、 資料來源端建立訪問賬號, 設定許可權和日誌配置項

2、 simba平臺上配置資料來源

3、 simba平臺上建立匯入任務, 選擇匯入的庫和表, 確定是否合併

4、 釋出匯入任務

5、 DSExtracter從資料庫源拉取全量快照, 作為初始化匯入資料

6、 DSExtracter實時解析資料庫日誌, 以增量的方式解析新增資料到kafka

7、 DSLoader 按照設定的週期(通常是10分鐘)將新增資料落盤到增量資料層(INC)

8、 DSMerger 定期(通常是30分鐘)將新增資料與全量資料合併到ODS

9、 後續的計算以增量或者全量的方式從ODS層消費資料


技術亮點

一、高效的合併方案

DataS同時保留了增量的日誌資料和全量的快照資料, 以支援複雜的企業業務場景。 同時DataS提供了高效的快照合併方案。 以下是DataS合併與基於HBase方案合併的效能比較測試。對於1T以上的資料表增量和全量merge時, DataS有12 ~24 倍的效能提升。

奇點雲資料中臺技術匯(二)| DataSimba系列之資料採集平臺

與傳統的利用HiveSQL 或者HBase 做merge的方式不同, DataS採用了二級對映的方式, 使最終的合併轉化為一個RDD或者一個Map中就可完成的小檔案合併, 並避免了不需要合併的檔案讀取, 如圖所示:

奇點雲資料中臺技術匯(二)| DataSimba系列之資料採集平臺


DataS合併邏輯如下:

1、 DataS會將新增資料劃分到不同的hive分割槽中, 分割槽可以根據業務自定義;

2、 在一個分割槽內, DataS利用布隆過濾(Bloom Filter)將資料對映到不同的檔案;

3、 新增資料和單一儲存檔案做區域性合併;


將整個合併最終劃分為小檔案的合併, 從而大幅提高了合併的效率。

二. 近實時的資料時延

DataS提供兩種合併方式: 寫時複製(CopyOnWrite)和 讀時合併(MergeOnRead)

寫時複製 是指每次增量資料與檔案合併時, 都是複製兩邊的資料生成新的全量資料檔案。 此種方式合併時效能稍差, 但讀資料(統計查詢)時效能好一些, 過程如下:


奇點雲資料中臺技術匯(二)| DataSimba系列之資料採集平臺


讀時合併 是指合併時只將增量資料寫入日誌檔案, 讀時(查詢統計)再合併重複資料。 同時會定期全量合併。 此種方式的合併效率很高, 資料時延可以達到秒級~分鐘級, 但查詢時效能稍差, 如圖所示:


奇點雲資料中臺技術匯(二)| DataSimba系列之資料採集平臺

兩種方式使用與不同的業務場景: 注重讀效能或者注重合併效能。

Datas支援豐富的場景應用

按照資料要求的時延和資料要求的完整性, 計算場景大致可分為三類:

奇點雲資料中臺技術匯(二)| DataSimba系列之資料採集平臺


其中:

·實時計算: 很多資料時延要求在 毫秒級 ~ 10分鐘的場景, 通常採用flink或者spark等計算引擎。 如:監控告警、實時特徵等等。

·增量計算:時延要求在10分鐘~小時級別, 資料要求增量處理的場景。 如企業大屏、活動效果分析、當日uv等統計資料展示。

·全量批處理: 主要針對各種T+1的報表統計, Simba目前採用Hive引擎。

目前市場上對於實時計算和全量批處理都有成熟的方案, 但對於夾縫中的增量計算支援的都不太好。增量計算無論是採用流式實時處理, 還是採用全量批處理, 都比較浪費資源, 且效果不理想。  DataS可以支援增量的採集、合併、計算, 以較低的計算成本支援了此類場景。  此外, DataS能很好的支援秒級以上的實時計算和批處理任務。

附-DataSimba資料採集支援的多種資料來源

DataSimba的採集平臺支援豐富的資料來源, 包括:

奇點雲資料中臺技術匯(二)| DataSimba系列之資料採集平臺


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69911376/viewspace-2645021/,如需轉載,請註明出處,否則將追究法律責任。

相關文章