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