數據中台技術匯(二)| DataSimba系列之數據采集平台


繼上期數據中台技術匯欄目發布DataSimba——企業級一站式大數據智能服務平台,本期介紹DataSimba的數據采集平台。

DataSimba采集平台屬於DataSimba的數據計算及服務平台的一部分, 負責數據的導入, 從而支持上層的數據處理。 DataSimba的定位是面向企業私有化部署,決定了采集平台面臨要解決的問題和傳統的互聯網公司不太一樣:

1、企業使用的數據庫類型多且雜, 包括很多非主流的數據庫;

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

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

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

 

采集平台總體架構

 

整個采集平台核心為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支持更多的數據庫類型:

實時采集數據流程

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

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 倍的性能提升。

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

 

DataS合並邏輯如下:

1、 DataS會將新增數據划分到不同的hive分區中, 分區可以根據業務自定義;

2、 在一個分區內, DataS利用布隆過濾(Bloom Filter)將數據映射到不同的文件;

3、 新增數據和單一存儲文件做局部合並;

 

將整個合並最終划分為小文件的合並, 從而大幅提高了合並的效率。

二. 近實時的數據時延

DataS提供兩種合並方式: 寫時拷貝(CopyOnWrite)和 讀時合並(MergeOnRead)

寫時拷貝是指每次增量數據與文件合並時, 都是拷貝兩邊的數據生成新的全量數據文件。 此種方式合並時性能稍差, 但讀數據(統計查詢)時性能好一些, 過程如下:

 

 

讀時合並是指合並時只將增量數據寫入日志文件, 讀時(查詢統計)再合並重復數據。 同時會定期全量合並。 此種方式的合並效率很高, 數據時延可以達到秒級~分鍾級, 但查詢時性能稍差, 如圖所示:

 

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

Datas支持豐富的場景應用

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

 

其中:

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

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

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

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

附-DataSimba數據采集支持的多種數據源

DataSimba的采集平台支持豐富的數據源, 包括:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM