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