大數(shù)據(jù)(big data)
大數(shù)據(jù),官方定義是指那些數(shù)據(jù)量特別大、數(shù)據(jù)類別特別復(fù)雜的數(shù)據(jù)集,這種數(shù)據(jù)集無法用傳統(tǒng)的數(shù)據(jù)庫進(jìn)行存儲,管理和處理。大數(shù)據(jù)的主要特點為數(shù)據(jù)量大(volume),數(shù)據(jù)類別復(fù)雜(variety),數(shù)據(jù)處理速度快(velocity)和數(shù)據(jù)真實性高(veracity),合起來被稱為4v。
大數(shù)據(jù)中的數(shù)據(jù)量非常巨大,達(dá)到了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ù)進(jìn)行分析處理后,卻能從中提煉出很有價值的信息。對大數(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)容的意思,因此常常不能準(zhǔn)確的了解用戶的需求。通過對大量復(fù)雜的數(shù)據(jù)進(jìn)行分析,讓計算機從中自我學(xué)習(xí),可以使計算機能夠盡量精確的了解用戶輸入內(nèi)容的意思,從而把握住用戶的需求,提供更好的用戶體驗。蘋果的siri和谷歌的google now都采用了語義引擎。
數(shù)據(jù)質(zhì)量管理是大數(shù)據(jù)在企業(yè)領(lǐng)域的重要應(yīng)用。為了保證大數(shù)據(jù)分析結(jié)果的準(zhǔn)確性,需要將大數(shù)據(jù)中不真實的數(shù)據(jù)剔除掉,保留最準(zhǔn)確的數(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)的單個計算機的計算能力不強,但是由于每個計算機只計算一部分?jǐn)?shù)據(jù),而且是多臺計算機同時計算,所以就分散系統(tǒng)而言,處理數(shù)據(jù)的速度會遠(yuǎn)高于單個計算機。
過去,分布式計算理論比較復(fù)雜,技術(shù)實現(xiàn)比較困難,因此在處理大數(shù)據(jù)方面,集中式計算一直是主流解決方案。ibm的大型機就是集中式計算的典型硬件,很多銀行和政府機構(gòu)都用它處理大數(shù)據(jù)。不過,對于當(dāng)時的互聯(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ù)分析的運算負(fù)荷。google,amazon,阿里巴巴的計算中心里的服務(wù)器集群都達(dá)到了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)的難度,可以進(jì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被貢獻(xiàn)給了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在運算速度上依然達(dá)不到google論文中的標(biāo)準(zhǔn)。
不過,hadoop的開源特性使其成為分布式計算系統(tǒng)的事實上的國際標(biāo)準(zhǔn)。yahoo,facebook,amazon以及國內(nèi)的百度,阿里巴巴等眾多互聯(lián)網(wǎng)公司都以hadoop為基礎(chǔ)搭建自己的分布式計算系統(tǒng)。
spark也是apache基金會的開源項目,它由加州大學(xué)伯克利分校的實驗室開發(fā),是另外一種重要的分布式計算系統(tǒng)。它在hadoop的基礎(chǔ)上進(jìn)行了一些架構(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團(tuán)隊開發(fā),是apache基金會的孵化項目。它在hadoop的基礎(chǔ)上提供了實時運算的特性,可以實時的處理大數(shù)據(jù)流。不同于hadoop和spark,storm不進(jìn)行數(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ù)處理。