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