圖1. 大數(shù)據(jù)的常見處理流程

整個(gè)處理流程可以概括為四步,分別是采集、導(dǎo)入和預(yù)處理、統(tǒng)計(jì)和分析以及挖掘。

采集

利用多個(gè)的數(shù)據(jù)庫來接收發(fā)自客戶端(Web、App或者傳感器形式等)的數(shù)據(jù),并且用戶可以通過這些數(shù)據(jù)庫來進(jìn)行簡單的查詢和處理工作,比如,電商 會(huì)使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫MySQL和Oracle等來存儲(chǔ)每一筆事務(wù)數(shù)據(jù),除此之外,Redis和MongoDB這樣的NoSQL數(shù)據(jù)庫也常用于數(shù)據(jù)的 采集。

在采集部分,主要特點(diǎn)和挑戰(zhàn)方面是并發(fā)數(shù)高,因?yàn)橥瑫r(shí)有可能會(huì)有成千上萬的用戶來進(jìn)行訪問和操作,比如著名用于購買火車票的12306站點(diǎn)和淘寶, 它們并發(fā)的訪問量在峰值時(shí)達(dá)到上百萬,所以需要在采集端部署大量數(shù)據(jù)庫才能支撐,并且如何在這些數(shù)據(jù)庫之間進(jìn)行負(fù)載均衡和分片的確是需要深入地思考和設(shè) 計(jì)。

導(dǎo)入/預(yù)處理

雖然有采集端本身會(huì)有很多數(shù)據(jù)庫,但是如果要對這些海量數(shù)據(jù)進(jìn)行有效地分析,還是應(yīng)該將這些來自前端的數(shù)據(jù)導(dǎo)入到一個(gè)集中的大型分布式數(shù)據(jù)庫或者分 布式存儲(chǔ)集群,并且可以在導(dǎo)入基礎(chǔ)上做一些簡單的清洗和預(yù)處理工作,也有一些用戶會(huì)在導(dǎo)入時(shí)候使用來自Twitter的Storm來對數(shù)據(jù)進(jìn)行流式計(jì)算, 來滿足部分業(yè)務(wù)的實(shí)時(shí)計(jì)算需求。

在特點(diǎn)和挑戰(zhàn)方面,主要是導(dǎo)入數(shù)據(jù)量大,每秒導(dǎo)入量經(jīng)常達(dá)到百兆,甚至GB級(jí)別。

統(tǒng)計(jì)/分析

統(tǒng)計(jì)與分析主要利用分布式數(shù)據(jù)庫或者分布式計(jì)算集群來對存儲(chǔ)于其內(nèi)的海量數(shù)據(jù)進(jìn)行普通的分析和分類匯總等,以滿足大多數(shù)常見的分析需求,在這方面,一些實(shí)時(shí)性需求會(huì)用到EMC 的GreenPlum、Oracle的Exadata以及基于MySQL的列式存儲(chǔ)Infobright等,而一些批處理或者基于半結(jié)構(gòu)化的需求可以使用 Hadoop。

統(tǒng)計(jì)與分析這部分,主要特點(diǎn)和挑戰(zhàn)方面是分析涉及的數(shù)據(jù)量大,其對系統(tǒng)資源,特別是I/O會(huì)有極大地占用。

挖掘

與前面統(tǒng)計(jì)和分析不同的是,數(shù)據(jù)挖掘一般沒有什么預(yù)先設(shè)定好的主題,主要是在現(xiàn)有數(shù)據(jù)上面進(jìn)行基于各種算法的計(jì)算,從而起到預(yù)測(Predict) 的效果,這樣實(shí)現(xiàn)一些高級(jí)別數(shù)據(jù)分析的需求,比較典型算法有用于聚類的K-Means、用于統(tǒng)計(jì)學(xué)習(xí)的SVM和用于分類的Naive Bayes,主要使用的工具有Hadoop的Mahout等。

在特點(diǎn)和挑戰(zhàn)方面,主要是挖掘的算法復(fù)雜,并且計(jì)算涉及的數(shù)據(jù)量和計(jì)算量都很大,還有,常用數(shù)據(jù)挖掘算法庫以單線程為主。

分享到

wangzhen

相關(guān)推薦