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