大數(shù)據(jù)學(xué)習(xí)必備三個(gè)框架Hadoop唧喉,Spark,Storm
大數(shù)據(jù)的主要特點(diǎn)為數(shù)據(jù)量大(Volume),數(shù)據(jù)類(lèi)別復(fù)雜(Variety)仇让,數(shù)據(jù)處理速度快(Velocity)和數(shù)據(jù)真實(shí)性高(Veracity),合起來(lái)被稱(chēng)為4V躺翻。
大數(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)買(mǎi)數(shù)據(jù)的分析神汹,挖掘出以前未知的兩者間的聯(lián)系庆捺,并利用這種聯(lián)系,提升了商品的銷(xiāo)量屁魏。亞馬遜的推薦引擎和谷歌的廣告系統(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)沿彭。蘋(píng)果的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ì)算系統(tǒng):Hadoop廉邑,Spark和Storm
講Hadoop哥蔚,Spark和Storm這三種分布式計(jì)算系統(tǒng)之前先提一下google的分布式計(jì)算系統(tǒng),由于google的分布式計(jì)算系統(tǒng)沒(méi)有開(kāi)源蛛蒙,因此這里不做重點(diǎn)介紹糙箍。
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ù)核心比规。
Hadoop:
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)目测秸。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)贷岸。
開(kāi)發(fā)應(yīng)用語(yǔ)言支持:hadoop本身是用java寫(xiě)的壹士,用其他語(yǔ)言開(kāi)發(fā)的Hadoop應(yīng)用大多數(shù)是使用Hadoop-Streaming來(lái)和框架對(duì)接的。 因?yàn)镾treaming會(huì)fork一個(gè)java進(jìn)程來(lái)讀寫(xiě)Python/Perl/C++的stdin/stdout偿警,開(kāi)銷(xiāo)會(huì)大一些墓卦。較大的任務(wù)、長(zhǎng)期運(yùn)行的任務(wù)户敬,推薦使用Java落剪。
Spark:
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使用硬盤(pán)來(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ù)。
開(kāi)發(fā)應(yīng)用語(yǔ)言支持:Spark 同時(shí)支持Scala贺纲、Python航闺、Java 三種應(yīng)用程序API編程接口和編程方式, 考慮到大數(shù)據(jù)處理的特性猴誊,一般會(huì)優(yōu)先使用Scala進(jìn)行編程潦刃,其次是Python,最后才是Java懈叹。 無(wú)論使用Scala乖杠、Python還是Java編程程序都需要遵循Spark 編程模型,考慮對(duì)Spark平臺(tái)支持的有力程度來(lái)說(shuō)澄成,Spark 對(duì)Scala語(yǔ)言的支持是最好的胧洒,因?yàn)樗凶钬S富的和最易用的編程接口。
Storm:
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é)果。案例:淘寶辫塌。
開(kāi)發(fā)應(yīng)用語(yǔ)言支持:核心邏輯是Clojure,其他還有PYTHON,JAVA
比較:
Hadoop擅長(zhǎng)離線分析漏策,實(shí)時(shí)是短項(xiàng),storm用流數(shù)據(jù)處理技術(shù)很輕巧的突破瓶頸臼氨,正好彌補(bǔ)了hadoop的不足掺喻。由于有足夠的成熟度和企業(yè)應(yīng)用先例(例如相比于spark),storm前景看好。