一個完整的大數據項目架構可以分為數據采集層,數據存儲層,數據計算層,數據接入層和數據應用層、基礎服務層 。
根據大數據項目的分層架構的自底向上的順序(數據流轉順序),應該關注:數據的采集與存儲、大數據計算、大數據監控。
與傳統項目開發相比,大數據項目開發具有如下特點
1)數據量大。帶來的問題就是資源消耗過大
2)一般涉及機器學習算法和模型
3)大數據項目交付的是數據
4)更多使用sql、java、python進行開發。其中使用最多的是sql.
下面說下數據的采集和存儲
數據采集主要分為3類:網絡數據采集、服務端日志采集、客戶端日志采集。在數據采集過程中,通常還需要進行數據的同步、匯總操作。最終,講這些采集的數據進行存儲以及支持后續的數據的數據處理與數據計算。
服務端日志采集
客戶端日志采集:
主要又分為頁面瀏覽日志采集與頁面交互日志采集
數據同步
直連同步
直連同步是通過api和動態鏈接庫的方式直接連接業務數據庫,如odbc、jdbc等標准接口。
優點:配置簡單、實現容易。
缺點:對原系統的性能影響比較大,當執行大批量數據同步時,會降低源系統的性能。如果業務數據庫采取主備策略,可直接從備份數據庫抽取數據,避免對主數據庫性能的影響。
數據文件同步
數據文件同步是先對文件的編碼、大小和格式進行約定,直接從源系統生成數據的文本文件,再通過文件服務器傳輸到目標系統,最終加載到目標系統中,當源系統中包含多個異構的數據庫(mysql\oracle\等)這種同步方式比較簡單實用。
通過文件服務器進行上傳下載可能丟包或者出現錯誤。為了確保數據文件同步的完整性,除上傳數據文件本身以外,通常還會上傳一個校驗文件。校驗文件記錄了數據文件的數據和文件大小等校驗信息,以供下游目標系統驗證數據同步的准確性。在源系統生成數據文件的過程中,可以先進行壓縮和加密處理,傳輸到目標系統后,在對數據進行解壓和解密,這樣能極大提高文件傳輸的效率和安全性。
數據庫日志解析同步
數據庫日志解析同步是通過解析日志文件獲取發生變更的數據,從而滿足增量數據同步的需求。日志文件信息豐富、數據格式穩定,目前廣范應用於從業務系統到數據倉庫的增量數據同步。
以mysql數據庫為例簡單介紹數據庫日志解析同步的實現過程
1)通過源系統的進程,讀取歸檔日志文件,用於收集變化的數據信息
2)判斷日志中的變更是否屬於被收集對象,並將其解析到目標文件中。這種讀操作是在操作系統層面完成的,不需要通過數據庫,不會影響源系統的性能。
3)通過網絡協議,實現源系統和目標系統之間的數據文件傳輸,相關進程可以確保數據文件的正確接收和網絡數據包的正確順序,並提供網絡傳輸冗余,確保數據文件的完整性。
4)數據被傳輸到目標系統后,可以通過數據加載模塊完成數據導入,從而實現數據從源系統到目標系統的同步
數據庫日志解析同步一般是獲取所有的數據記錄的變更(除刪除以外的變更),之后落庫到目標表,並更具主鍵重復進行到排序(按照日志事件),以獲取最后狀態的變化情況。