圖1. 大數(shù)據(jù)的常見處理流程
整個處理流程可以概括為四步,分別是采集、導入和預處理、統(tǒng)計和分析以及挖掘。
采集
利用多個的數(shù)據(jù)庫來接收發(fā)自客戶端(Web、App或者傳感器形式等)的數(shù)據(jù),并且用戶可以通過這些數(shù)據(jù)庫來進行簡單的查詢和處理工作,比如,電商 會使用傳統(tǒng)的關系型數(shù)據(jù)庫MySQL和Oracle等來存儲每一筆事務數(shù)據(jù),除此之外,Redis和MongoDB這樣的NoSQL數(shù)據(jù)庫也常用于數(shù)據(jù)的 采集。
在采集部分,主要特點和挑戰(zhàn)方面是并發(fā)數(shù)高,因為同時有可能會有成千上萬的用戶來進行訪問和操作,比如著名用于購買火車票的12306站點和淘寶, 它們并發(fā)的訪問量在峰值時達到上百萬,所以需要在采集端部署大量數(shù)據(jù)庫才能支撐,并且如何在這些數(shù)據(jù)庫之間進行負載均衡和分片的確是需要深入地思考和設 計。
導入/預處理
雖然有采集端本身會有很多數(shù)據(jù)庫,但是如果要對這些海量數(shù)據(jù)進行有效地分析,還是應該將這些來自前端的數(shù)據(jù)導入到一個集中的大型分布式數(shù)據(jù)庫或者分 布式存儲集群,并且可以在導入基礎上做一些簡單的清洗和預處理工作,也有一些用戶會在導入時候使用來自Twitter的Storm來對數(shù)據(jù)進行流式計算, 來滿足部分業(yè)務的實時計算需求。
在特點和挑戰(zhàn)方面,主要是導入數(shù)據(jù)量大,每秒導入量經常達到百兆,甚至GB級別。
統(tǒng)計/分析
統(tǒng)計與分析主要利用分布式數(shù)據(jù)庫或者分布式計算集群來對存儲于其內的海量數(shù)據(jù)進行普通的分析和分類匯總等,以滿足大多數(shù)常見的分析需求,在這方面,一些實時性需求會用到EMC 的GreenPlum、Oracle的Exadata以及基于MySQL的列式存儲Infobright等,而一些批處理或者基于半結構化的需求可以使用 Hadoop。
統(tǒng)計與分析這部分,主要特點和挑戰(zhàn)方面是分析涉及的數(shù)據(jù)量大,其對系統(tǒng)資源,特別是I/O會有極大地占用。
挖掘
與前面統(tǒng)計和分析不同的是,數(shù)據(jù)挖掘一般沒有什么預先設定好的主題,主要是在現(xiàn)有數(shù)據(jù)上面進行基于各種算法的計算,從而起到預測(Predict) 的效果,這樣實現(xiàn)一些高級別數(shù)據(jù)分析的需求,比較典型算法有用于聚類的K-Means、用于統(tǒng)計學習的SVM和用于分類的Naive Bayes,主要使用的工具有Hadoop的Mahout等。
在特點和挑戰(zhàn)方面,主要是挖掘的算法復雜,并且計算涉及的數(shù)據(jù)量和計算量都很大,還有,常用數(shù)據(jù)挖掘算法庫以單線程為主。