華文網

大資料分析與處理的五個方面和方法

從所周知,大資料已經不簡簡單單是資料大的事實了,而最重要的現實是對大資料進行分析,只有通過分析才能獲取很多智慧的,深入的,有價值的資訊。那麼越來越多的應用涉及到大資料,

而這些大資料的屬性,包括數量,速度,多樣性等等都是呈現了大資料不斷增長的複雜性,所以大資料的分析方法在大資料領域就顯得尤為重要,可以說是決定最終資訊是否有價值的決定性因素。基於如此的認識,大資料分析普遍存在的方法理論有哪些呢?

一、大資料分析的五個基本方面

1. Analytic Visualizations(視覺化分析)

不管是對資料分析專家還是普通使用者,資料視覺化是資料分析工具最基本的要求。視覺化可以直觀的展示資料,讓資料自己說話,讓觀眾聽到結果。

2. Data Mining Algorithms(資料採擷演算法)

視覺化是給人看的,資料採擷就是給機器看的。集群、分割、孤立點分析還有其他的演算法讓我們深入資料內部,挖掘價值。這些演算法不僅要處理大資料的量,

也要處理大資料的速度。

3. Predictive Analytic Capabilities(預測性分析能力)

資料採擷可以讓分析員更好的理解資料,而預測性分析可以讓分析員根據視覺化分析和資料採擷的結果做出一些預測性的判斷。

4. Semantic Engines(語義引擎)

我們知道由於非結構化資料的多樣性帶來了資料分析的新的挑戰,我們需要一系列的工具去解析,提取,分析資料。語義引擎需要被設計成能夠從“文檔”中智慧提取資訊。

5. Data Quality and Master Data Management(資料品質和資料管理)

資料品質和資料管理是一些管理方面的最佳實踐。通過標準化的流程和工具對資料進行處理可以保證一個預先定義好的高品質的分析結果。

假如大資料真的是下一個重要的技術革新的話,我們最好把精力關注在大資料能給我們帶來的好處,而不僅僅是挑戰。

二、大資料處理

周濤博士說:大資料處理資料時代理念的三大轉變:要全體不要抽樣,要效率不要絕對精確,要相關不要因果。具體的大資料處理方法其實有很多,但是根據長時間的實踐,筆者總結了一個基本的大資料處理流程,並且這個流程應該能夠對大家理順大資料的處理有所説明。整個處理流程可以概括為四步,

分別是採集、導入和預處理、統計和分析,以及挖掘。

採集

大資料的採集是指利用多個資料庫來接收發自用戶端(Web、App或者感測器形式等)的資料,並且使用者可以通過這些資料庫來進行簡單的查詢和處理工作。比如,電商會使用傳統的關係型數據庫MySQL和Oracle等來存儲每一筆交易資料,除此之外,Redis和MongoDB這樣的NoSQL資料庫也常用於資料的採集。

在大資料的採集過程中,其主要特點和挑戰是併發數高,因為同時有可能會有成千上萬的用戶來進行訪問和操作,比如火車票售票網站和淘寶,它們併發的訪問量在峰值時達到上百萬,所以需要在採集端部署大量資料庫才能支撐。並且如何在這些資料庫之間進行負載均衡和分片的確是需要深入的思考和設計。

導入/預處理

雖然採集端本身會有很多資料庫,但是如果要對這些海量資料進行有效的分析,還是應該將這些來自前端的資料導入到一個集中的大型分散式資料庫,或者分散式存儲集群,並且可以在導入基礎上做一些簡單的清洗和預處理工作。也有一些用戶會在導入時使用來自Twitter的Storm來對資料進行流式計算,來滿足部分業務的即時計算需求。導入與預處理過程的特點和挑戰主要是導入的資料量大,每秒鐘的導入量經常會達到百兆,甚至千兆級別。

統計/分析

統計與分析主要利用分散式資料庫,或者分散式運算集群來對存儲於其內的海量資料進行普通的分析和分類匯總等,以滿足大多數常見的分析需求,在這方面,一些即時性需求會用到EMC 的GreenPlum、Oracle的Exadata,以及基於MySQL的列式存儲Infobright等,而一些批次處理,或者基於半結構化資料的需求可以使用Hadoop。統計與分析這部分的主要特點和挑戰是分析涉及的資料量大,其對系統資源,特別是I/O會有極大的佔用。

挖掘

與前面統計和分析過程不同的是,資料採擷一般沒有什麼預先設定好的主題,主要是在現有資料上面進行基於各種演算法的計算,從而起到預測(Predict)的效果,從而實現一些高級別資料分析的需求。比較典型演算法有用於聚類的K-Means、用於統計學習的SVM和用於分類的Naive Bayes,主要使用的工具有Hadoop的Mahout等。該過程的特點和挑戰主要是用於挖掘的演算法很複雜,並且計算涉及的資料量和計算量都很大,還有,常用資料採擷演算法都以單執行緒為主。

因為同時有可能會有成千上萬的用戶來進行訪問和操作,比如火車票售票網站和淘寶,它們併發的訪問量在峰值時達到上百萬,所以需要在採集端部署大量資料庫才能支撐。並且如何在這些資料庫之間進行負載均衡和分片的確是需要深入的思考和設計。

導入/預處理

雖然採集端本身會有很多資料庫,但是如果要對這些海量資料進行有效的分析,還是應該將這些來自前端的資料導入到一個集中的大型分散式資料庫,或者分散式存儲集群,並且可以在導入基礎上做一些簡單的清洗和預處理工作。也有一些用戶會在導入時使用來自Twitter的Storm來對資料進行流式計算,來滿足部分業務的即時計算需求。導入與預處理過程的特點和挑戰主要是導入的資料量大,每秒鐘的導入量經常會達到百兆,甚至千兆級別。

統計/分析

統計與分析主要利用分散式資料庫,或者分散式運算集群來對存儲於其內的海量資料進行普通的分析和分類匯總等,以滿足大多數常見的分析需求,在這方面,一些即時性需求會用到EMC 的GreenPlum、Oracle的Exadata,以及基於MySQL的列式存儲Infobright等,而一些批次處理,或者基於半結構化資料的需求可以使用Hadoop。統計與分析這部分的主要特點和挑戰是分析涉及的資料量大,其對系統資源,特別是I/O會有極大的佔用。

挖掘

與前面統計和分析過程不同的是,資料採擷一般沒有什麼預先設定好的主題,主要是在現有資料上面進行基於各種演算法的計算,從而起到預測(Predict)的效果,從而實現一些高級別資料分析的需求。比較典型演算法有用於聚類的K-Means、用於統計學習的SVM和用於分類的Naive Bayes,主要使用的工具有Hadoop的Mahout等。該過程的特點和挑戰主要是用於挖掘的演算法很複雜,並且計算涉及的資料量和計算量都很大,還有,常用資料採擷演算法都以單執行緒為主。