隨著互聯網信息化應用的普及,越來越多的企業(yè)和機構擁有海量數據。這些數據的采集和分析大多依托于大數據平臺。數據從采集到分析最后再形成結果以及可視化模型,中間經歷復雜的大數據處理過程。下面主要介紹大數據處理的基本過程和方法,以及當前普適的大數據平臺。
大數據處理的過程一般分為4個步驟。
1. 數據采集
數據采集,主要是指通過某種方式搜集數據并存入數據庫中,并且用戶可以通過數據庫進行簡單的查詢和處理工作。例如,電商平臺使用傳統(tǒng)的關系型數據庫(MySQL、Oracle等)存儲每一筆事務數據,或采用Redis或MongoDB等NoSQL類型的數據庫。下面介紹幾種常見的數據采集方法。
?。?)系統(tǒng)日志采集方法
大型的互聯網企業(yè)一般都會開發(fā)自己的數據采集工具,大多用于日志數據的采集。如Hadoop的Chukwa、Cloudera的Flume、Facebook的Scribe等,這些工具均采用分布式架構,能滿足每秒數百兆字節(jié)的日志數據采集和傳輸需求。
(2)網絡數據采集方法
網絡數據采集是指通過網絡爬蟲或網站公開API等方式從網站上獲取數據信息。該方法可以將非結構化數據從網頁中抽取出來,將其存儲為統(tǒng)一的本地數據文件,并以結構化的方式存儲。它支持圖片、音頻、視頻等文件或附件的采集,附件與正文可以自動關聯。
?。?)特定的數據采集方法
對于企業(yè)生產經營數據或學科研究數據等保密性要求較高的數據,可以通過與企業(yè)或研究機構合作,使用特定系統(tǒng)接口等相關方式采集數據;也可采用特定的傳感器獲取指定的數據,再加密傳輸到數據庫中。
2. 數據預處理
由于數據搜集途徑多樣、數據種類繁多,采集的數據具有多源異構特性,并且同時存在數據不完整、有噪聲、不一致等情況。因此,將搜集的數據進行統(tǒng)計分析或利用數據挖掘算法建模,均需要數據清洗,即統(tǒng)一數據格式、提高數據質量,進而提升數據挖掘效果。
數據預處理的方法主要包括:數據清洗,用于去除噪聲數據;數據集成,將多個數據源中的數據融合集中到一致的數據存儲中;數據變換,把原始數據轉換成為適合數據挖掘的形式;數據規(guī)約,包括數據聚類、維度歸約、數據壓縮、數值歸約、離散量化等。
3. 數據統(tǒng)計分析
統(tǒng)計與分析主要利用分布式數據庫,或分布式計算集群來匯總分析海量數據,以滿足后續(xù)的數據挖掘需求。常見的結構化關系數據實時統(tǒng)計分析工具,包括 EMC 的 GreenPlum、Oracle的Exadata,以及基于MySQL的列式存儲Infobright等;而其他半結構化數據處理或非關系型批處理等則可應用Hadoop。
4. 數據挖掘與機器學習
在數據統(tǒng)計分析的基礎上,數據挖掘通過對數據實施高級分析與建模運算,借助機器學習模型,最終形成數據處理的智能決策。代表性的數據挖掘算法有K-means 聚類、SVM 預測、Na?ve Bayes分類等,大數據挖掘的集成平臺有Hadoop的Mahout等。自AlphaGo問世以來,深度學習開始應用到各行各業(yè)的大數據領域,Google 推出的深度學習集成平臺TensorFlow,極大降低了大數據應用深度學習的門檻。
諸如淘寶、12306 等大平臺的并發(fā)量極大,采用分布式大數據架構。當前常用的大數據分布式平臺主要有Hadoop和Spark。
Apache Hadoop是一款支持數據密集型分布式集群計算應用開源軟件框架,基于Google公司提出的MapReduce和GFS文件系統(tǒng)。Hadoop框架可為應用提供透明可靠的數據分布式處理,即MapReduce編程范式:應用程序被分區(qū)成許多小部分,每個部分都能在集群中的任意節(jié)點上運行。同時,Hadoop 還提供了分布式文件系統(tǒng),用以存儲所有計算節(jié)點的數據。MapReduce和分布式文件系統(tǒng)的設計,使Hadoop框架能夠自動處理節(jié)點故障,應用程序能與成千上萬具有獨立運算的計算機共享數據。整個Apache Hadoop平臺包括Hadoop內核、MapReduce、Hadoop分布式文件系統(tǒng)(HDFS),以及Hive、HBase等數據處理工具。
Apache Spark也是一個開源簇運算框架,最初由加州大學伯克利分校的AMPLab開發(fā)。Hadoop的MapReduce節(jié)點需在運行完任務后將數據存放到磁盤中,Spark則使用了存儲器內存運算技術,能在數據尚未寫入硬盤時即在存儲器內完成運算。Spark 在存儲器內運行程序的速度比MapReduce 的運算速度快 100 多倍,即便在硬盤上運行程序,Spark 也能比MapReduce快10倍以上。Spark允許用戶將數據加載至簇存儲器,并多次對其進行查詢,尤其適合用于機器學習算法。
Spark支持獨立模式(本地Spark簇)、Hadoop YARN或Apache Mesos的簇管理模式,可以和HDFS、Cassandra、OpenStack Swift和Amazon S3等分布式存儲系統(tǒng)對接。Spark也支持偽分布式(Pseudo-Distributed)本地模式,不過通常只用于開發(fā)或測試時以本機文件系統(tǒng)替換分布式存儲系統(tǒng)。