什么是數據采集:
數據采集是大數據的基石,不論是現在的互聯網公司,物聯網公司或者傳統的IT公司,每個業務流程環節都會產生大量的數據,同時用戶操作的日志也會產生大量的數據,為了將這些結構化和非結構化的數據進行采集,我們必須要有一套完整的數據采集方案流程,為后續的數據分析應用提供數據基礎。
根據不同業務場景,對于數據采集的時效性要求也是不一樣的,一般分為離線數據采集和實時數據采集。
離線數據采集:
離線數據采集主要包括從數據庫中采集,如MySQL、Oracle、MongoDB等;從離線文件采集,如外部系統數據。每天凌晨會抽取前一天的數據(T+1),對于維度數據一般采用每次全量采集,對于業務數據,為了提高采集效率,同時也為了保住業務數據庫的穩定性,采用每天增量采集,然后將T+1的數據合并成新的全量數據。
對于關系型數據庫,如MySQL,一般是有主從數據庫的,為了保住穩定和不影響主庫的查詢性能,我們一般抽取從庫數據。對于文件數據抽取前需要先檢測文件是否存在,源系統提供文件的時候需要提供對應的校驗文件,校驗文件里一般包含文件的記錄數、字段格式等信息。采集到文件后需要對文件進行校驗,文件完整的情況下才能繼續后續數據處理程序。
實時數據采集:
實時數據采集主要是一些頁面日志的采集,也就是我們常說的用戶行為分析數據。日志采集一般有以下幾個步驟:數據埋點,數據上報,數據存儲。
數據埋點:網站上線后一般會植入一段JS腳本,用戶訪問頁面時,JS會收集當前頁面的一些信息,用戶問的上下文信息以及當前訪問的頁面業務相關數據。
數據上報:JS執行完畢后,會將所有收集到的信息拼裝到一個請求內,通過日志請求將數據發送到日志服務器,存儲為JSON文件;一般情況下,在 JS 執行完成后就會立即向日志服務器發送消息隊列中。
數據存儲:存儲在磁盤上的文件會部署數據采集組件比如Flume,將采集到的日志數據發送到HDFS進行存儲或者轉存到HBase進行存儲。消息隊列的數據則可以直接消費落地到HDFS或者HBase進行存儲。
想要了解更多政策信息可以咨詢中培課程顧問李老師18911709446(同微信)