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

奇點雲數據中臺技術匯(二)| DataSimba系列之數據採集平臺
繼上期數據中臺技術匯欄目發佈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系列之數據採集平臺

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章