大數(shù)據(jù)基礎(chǔ)知識:分布式計算、服務(wù)器集群
大數(shù)據(jù)中的數(shù)據(jù)量非常巨大,達到了PB級別。而且這龐大的數(shù)據(jù)之中,不僅僅包括結(jié)構(gòu)化數(shù)據(jù)(如數(shù)字、符號等數(shù)據(jù)),還包括非結(jié)構(gòu)化數(shù)據(jù)(如文本、圖像、聲音、視頻等數(shù)據(jù))。這使得大數(shù)據(jù)的存儲,管理和處理很難利用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫去完成。在大數(shù)據(jù)之中,有價值的信息往往深藏其中。這就需要對大數(shù)據(jù)的處理速度要非???,才能短時間之內(nèi)就能從大量的復(fù)雜數(shù)據(jù)之中獲取到有價值的信息。在大數(shù)據(jù)的大量復(fù)雜的數(shù)據(jù)之中,通常不僅僅包含真實的數(shù)據(jù),一些虛假的數(shù)據(jù)也混雜其中。這就需要在大數(shù)據(jù)的處理中將虛假的數(shù)據(jù)剔除,利用真實的數(shù)據(jù)來分析得出真實的結(jié)果。
大數(shù)據(jù)分析(Big Data Analysis)
大數(shù)據(jù),表面上看就是大量復(fù)雜的數(shù)據(jù),這些數(shù)據(jù)本身的價值并不高,但是對這些大量復(fù)雜的數(shù)據(jù)進行分析處理后,卻能從中提煉出很有價值的信息。對大數(shù)據(jù)的分析,主要分為五個方面:可視化分析(Analytic Visualization)、數(shù)據(jù)挖掘算法(Date Mining Algorithms)、預(yù)測性分析能力(Predictive Analytic Capabilities)、語義引擎(Semantic Engines)和數(shù)據(jù)質(zhì)量管理(Data Quality Management)。
可視化分析是普通消費者常??梢砸姷降囊环N大數(shù)據(jù)分析結(jié)果的表現(xiàn)形式,比如說百度制作的“百度地圖春節(jié)人口遷徙大數(shù)據(jù)”就是典型的案例之一。可視化分析將大量復(fù)雜的數(shù)據(jù)自動轉(zhuǎn)化成直觀形象的圖表,使其能夠更加容易的被普通消費者所接受和理解。
數(shù)據(jù)挖掘算法是大數(shù)據(jù)分析的理論核心,其本質(zhì)是一組根據(jù)算法事先定義好的數(shù)學(xué)公式,將收集到的數(shù)據(jù)作為參數(shù)變量帶入其中,從而能夠從大量復(fù)雜的數(shù)據(jù)中提取到有價值的信息。著名的“啤酒和尿布”的故事就是數(shù)據(jù)挖掘算法的經(jīng)典案例。沃爾瑪通過對啤酒和尿布購買數(shù)據(jù)的分析,挖掘出以前未知的兩者間的聯(lián)系,并利用這種聯(lián)系,提升了商品的銷量。亞馬遜的推薦引擎和谷歌的廣告系統(tǒng)都大量使用了數(shù)據(jù)挖掘算法。
預(yù)測性分析能力是大數(shù)據(jù)分析最重要的應(yīng)用領(lǐng)域。從大量復(fù)雜的數(shù)據(jù)中挖掘出規(guī)律,建立起科學(xué)的事件模型,通過將新的數(shù)據(jù)帶入模型,就可以預(yù)測未來的事件走向。預(yù)測性分析能力常常被應(yīng)用在金融分析和科學(xué)研究領(lǐng)域,用于股票預(yù)測或氣象預(yù)測等。
語義引擎是機器學(xué)習(xí)的成果之一。過去,計算機對用戶輸入內(nèi)容的理解僅僅停留在字符階段,不能很好的理解輸入內(nèi)容的意思,因此常常不能準確的了解用戶的需求。通過對大量復(fù)雜的數(shù)據(jù)進行分析,讓計算機從中自我學(xué)習(xí),可以使計算機能夠盡量精確的了解用戶輸入內(nèi)容的意思,從而把握住用戶的需求,提供更好的用戶體驗。蘋果的Siri和谷歌的Google Now都采用了語義引擎。
數(shù)據(jù)質(zhì)量管理是大數(shù)據(jù)在企業(yè)領(lǐng)域的重要應(yīng)用。為了保證大數(shù)據(jù)分析結(jié)果的準確性,需要將大數(shù)據(jù)中不真實的數(shù)據(jù)剔除掉,保留最準確的數(shù)據(jù)。這就需要建立有效的數(shù)據(jù)質(zhì)量管理系統(tǒng),分析收集到的大量復(fù)雜的數(shù)據(jù),挑選出真實有效的數(shù)據(jù)。
分布式計算(Distributed Computing)
對于如何處理大數(shù)據(jù),計算機科學(xué)界有兩大方向:第一個方向是集中式計算,就是通過不斷增加處理器的數(shù)量來增強單個計算機的計算能力,從而提高處理數(shù)據(jù)的速度。第二個方向是分布式計算,就是把一組計算機通過網(wǎng)絡(luò)相互連接組成分散系統(tǒng),然后將需要處理的大量數(shù)據(jù)分散成多個部分,交由分散系統(tǒng)內(nèi)的計算機組同時計算,最后將這些計算結(jié)果合并得到最終的結(jié)果。盡管分散系統(tǒng)內(nèi)的單個計算機的計算能力不強,但是由于每個計算機只計算一部分數(shù)據(jù),而且是多臺計算機同時計算,所以就分散系統(tǒng)而言,處理數(shù)據(jù)的速度會遠高于單個計算機。
過去,分布式計算理論比較復(fù)雜,技術(shù)實現(xiàn)比較困難,因此在處理大數(shù)據(jù)方面,集中式計算一直是主流解決方案。IBM的大型機就是集中式計算的典型硬件,很多銀行和政府機構(gòu)都用它處理大數(shù)據(jù)。不過,對于當時的互聯(lián)網(wǎng)公司來說,IBM的大型機的價格過于昂貴。因此,互聯(lián)網(wǎng)公司的把研究方向放在了可以使用在廉價計算機上的分布式計算上。
服務(wù)器集群(Server Cluster)
服務(wù)器集群是一種提升服務(wù)器整體計算能力的解決方案。它是由互相連接在一起的服務(wù)器群所組成的一個并行式或分布式系統(tǒng)。服務(wù)器集群中的服務(wù)器運行同一個計算任務(wù)。因此,從外部看,這群服務(wù)器表現(xiàn)為一臺虛擬的服務(wù)器,對外提供統(tǒng)一的服務(wù)。
盡管單臺服務(wù)器的運算能力有限,但是將成百上千的服務(wù)器組成服務(wù)器集群后,整個系統(tǒng)就具備了強大的運算能力,可以支持大數(shù)據(jù)分析的運算負荷。Google,Amazon,阿里巴巴的計算中心里的服務(wù)器集群都達到了5000臺服務(wù)器的規(guī)模。
大數(shù)據(jù)的技術(shù)基礎(chǔ):MapReduce、Google File System和BigTable
2003年到2004年間,Google發(fā)表了MapReduce、GFS(Google File System)和BigTable三篇技術(shù)論文,提出了一套全新的分布式計算理論。
MapReduce是分布式計算框架,GFS(Google File System)是分布式文件系統(tǒng),BigTable是基于Google File System的數(shù)據(jù)存儲系統(tǒng),這三大組件組成了Google的分布式計算模型。
Google的分布式計算模型相比于傳統(tǒng)的分布式計算模型有三大優(yōu)勢:首先,它簡化了傳統(tǒng)的分布式計算理論,降低了技術(shù)實現(xiàn)的難度,可以進行實際的應(yīng)用。其次,它可以應(yīng)用在廉價的計算設(shè)備上,只需增加計算設(shè)備的數(shù)量就可以提升整體的計算能力,應(yīng)用成本十分低廉。最后,它被Google應(yīng)用在Google的計算中心,取得了很好的效果,有了實際應(yīng)用的證明。
后來,各家互聯(lián)網(wǎng)公司開始利用Google的分布式計算模型搭建自己的分布式計算系統(tǒng),Google的這三篇論文也就成為了大數(shù)據(jù)時代的技術(shù)核心。
主流的三大分布式計算系統(tǒng):Hadoop,Spark和Storm
由于Google沒有開源Google分布式計算模型的技術(shù)實現(xiàn),所以其他互聯(lián)網(wǎng)公司只能根據(jù)Google三篇技術(shù)論文中的相關(guān)原理,搭建自己的分布式計算系統(tǒng)。
Yahoo的工程師Doug Cutting和Mike Cafarella在2005年合作開發(fā)了分布式計算系統(tǒng)Hadoop。后來,Hadoop被貢獻給了Apache基金會,成為了Apache基金會的開源項目。Doug Cutting也成為Apache基金會的主席,主持Hadoop的開發(fā)工作。
Hadoop采用MapReduce分布式計算框架,并根據(jù)GFS開發(fā)了HDFS分布式文件系統(tǒng),根據(jù)BigTable開發(fā)了HBase數(shù)據(jù)存儲系統(tǒng)。盡管和Google內(nèi)部使用的分布式計算系統(tǒng)原理相同,但是Hadoop在運算速度上依然達不到Google論文中的標準。
不過,Hadoop的開源特性使其成為分布式計算系統(tǒng)的事實上的國際標準。Yahoo,F(xiàn)acebook,Amazon以及國內(nèi)的百度,阿里巴巴等眾多互聯(lián)網(wǎng)公司都以Hadoop為基礎(chǔ)搭建自己的分布式計算系統(tǒng)。
Spark也是Apache基金會的開源項目,它由加州大學(xué)伯克利分校的實驗室開發(fā),是另外一種重要的分布式計算系統(tǒng)。它在Hadoop的基礎(chǔ)上進行了一些架構(gòu)上的改良。Spark與Hadoop最大的不同點在于,Hadoop使用硬盤來存儲數(shù)據(jù),而Spark使用內(nèi)存來存儲數(shù)據(jù),因此Spark可以提供超過Hadoop100倍的運算速度。但是,由于內(nèi)存斷電后會丟失數(shù)據(jù),Spark不能用于處理需要長期保存的數(shù)據(jù)。
Storm是Twitter主推的分布式計算系統(tǒng),它由BackType團隊開發(fā),是Apache基金會的孵化項目。它在Hadoop的基礎(chǔ)上提供了實時運算的特性,可以實時的處理大數(shù)據(jù)流。不同于Hadoop和Spark,Storm不進行數(shù)據(jù)的收集和存儲工作,它直接通過網(wǎng)絡(luò)實時的接受數(shù)據(jù)并且實時的處理數(shù)據(jù),然后直接通過網(wǎng)絡(luò)實時的傳回結(jié)果。
Hadoop,Spark和Storm是目前最重要的三大分布式計算系統(tǒng),Hadoop常用于離線的復(fù)雜的大數(shù)據(jù)處理,Spark常用于離線的快速的大數(shù)據(jù)處理,而Storm常用于在線的實時的大數(shù)據(jù)處理。