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