李榮富
Hadoop是如今大數(shù)據(jù)革命的代表性技術(shù),做Hadoop相關(guān)產(chǎn)品有很多,其中有很多不一樣的選擇和變種,比較知名的有Cloudera、Hortonwork、亞馬遜EMR、Storm和Spark。這些都是Hadoop的忠實(shí)“粉絲”。
想要搞清楚大數(shù)據(jù)和Hadoop的關(guān)系,我們還得先認(rèn)識(shí)一下Hadoop。
一種數(shù)據(jù)存儲(chǔ)和分析的方法
如何理解Hadoop呢?官方給的定義是這樣的:作為一種軟件庫(kù),Hadoop允許在集群服務(wù)器上使用簡(jiǎn)單的編程模型對(duì)大數(shù)據(jù)集進(jìn)行分布式處理。它被設(shè)計(jì)成能夠從單臺(tái)服務(wù)器擴(kuò)展到數(shù)以千計(jì)的服務(wù)器,每臺(tái)服務(wù)器都有本地的計(jì)算和存儲(chǔ)資源。Hadoop的高可用性并不依賴硬件,其代碼庫(kù)自身就能在應(yīng)用層偵測(cè)并處理硬件故障,因此能基于服務(wù)器集群提供高可用性的服務(wù)。
對(duì)于非專業(yè)人員,這個(gè)解釋顯得比較晦澀,我們從“系統(tǒng)”這個(gè)角度來理解。Hadoop是一個(gè)分布式系統(tǒng),這種系統(tǒng)的結(jié)構(gòu)特點(diǎn)是表面上看起來是一個(gè)整體,實(shí)際上它的各個(gè)模塊和數(shù)據(jù)都具有高度的自治獨(dú)立性,系統(tǒng)中的若干臺(tái)計(jì)算機(jī)可以互相協(xié)作來完成一個(gè)共同的任務(wù),或者說一個(gè)程序可以分布在幾臺(tái)計(jì)算機(jī)上并行地運(yùn)行。比如說我們平時(shí)使用的萬維網(wǎng)就是一個(gè)很好的分布式系統(tǒng)的例子,表面看起來它是一個(gè)整體,實(shí)際上網(wǎng)頁(yè)中很多不同的部分都是獨(dú)立工作的。
具體到Hadoop中,我們會(huì)發(fā)現(xiàn)它的“獨(dú)立性”做得更徹底, Hadoop中幾乎所有的功能都是獨(dú)立模塊化的,也就是說具體在應(yīng)用中使用者可以用其他軟件抽掉或替代那些不需要的模塊,這使得Hadoop的“兼容性”變得很高。
如果Hadoop還是沒給你留下深刻的印象的話,那么你只要記住,這個(gè)系統(tǒng)是由兩個(gè)部分構(gòu)成的,一個(gè)是數(shù)據(jù)處理框架,另一個(gè)是分布式數(shù)據(jù)存儲(chǔ)文件系統(tǒng)(HDFS)。大數(shù)據(jù)存在HDFS中,需要用的時(shí)候就從這里拿到數(shù)據(jù)處理框架里面處理。
大數(shù)據(jù)為何離不開它
我們這里說的“大數(shù)據(jù)離不開Hadoop”其實(shí)是相對(duì)而言的,從技術(shù)上來說,大數(shù)據(jù)的處理非得Hadoop嗎?那倒不是,在Hadoop出現(xiàn)之前很多企業(yè)已經(jīng)開始處理大數(shù)據(jù)啦。不過,這些企業(yè)僅限于大企業(yè),因?yàn)橹挥兴麄冇心芰?gòu)買處理大數(shù)據(jù)的大型機(jī)器。
但是,大數(shù)據(jù)要想做出更多貢獻(xiàn),必須讓更多的組織機(jī)構(gòu)參與進(jìn)來,在時(shí)代的呼喚下,一種成本相對(duì)較低的能夠處理大數(shù)據(jù)的系統(tǒng)就呼之欲出。這時(shí)候Google站了出來,他們的工程師經(jīng)過多番探討實(shí)踐,最后做出了Hadoop!
Hadoop的出現(xiàn)在大數(shù)據(jù)發(fā)展史上是有里程碑意義的,因?yàn)樗某霈F(xiàn)把大數(shù)據(jù)的應(yīng)用從小眾變成了大眾。最直接的體現(xiàn)就是它降低了大數(shù)據(jù)處理成本!
首先,企業(yè)不用花太多錢在服務(wù)器硬件成本上,一般廉價(jià)的服務(wù)器也足以支撐起Hadoop。
其次,在軟件使用上Hadoop不像是昂貴的“大型機(jī)”——昂貴且很多東西不開放。Hadoop不僅對(duì)用戶開放源代碼和協(xié)議,可供自由修改,最主要的是,這些東西的使用時(shí)成本相對(duì)低廉的。
再次,Hadoop出自Google工程師之手,工程師們使用的時(shí)候都是二次開發(fā),其本身的結(jié)構(gòu)合理性、安全性都有保障,在日常維護(hù)上的成本低了很多。當(dāng)然,這里還有一個(gè)“后天”累計(jì)而成的優(yōu)勢(shì)不得不提,Hadoop自從出現(xiàn)之后就受到了熱捧,目前工程師們已經(jīng)自發(fā)的形成了非常熱鬧的討論社區(qū),新手在入門的時(shí)候可以享受到友好的學(xué)習(xí)環(huán)境和進(jìn)階環(huán)境。
缺陷:不適合處理實(shí)時(shí)數(shù)據(jù)
Twitter在使用了Hadoop處理大數(shù)據(jù)后,他們又推出了自己的自己的另外一個(gè)系統(tǒng)——Storm,因?yàn)镠adoop并不適合處理實(shí)時(shí)大數(shù)據(jù),但在Twitter上用戶每天就要生成1.4億條新的推文。
相比較起來,雖然Hadoop吞吐數(shù)據(jù)的量比Storm大,但Storm在時(shí)延上比要比Hadoop優(yōu)得多,在實(shí)時(shí)數(shù)據(jù)較多的業(yè)務(wù)場(chǎng)景下,當(dāng)然是Storm比較合適。這還得從它們的工作本質(zhì)說起。
Storm 與Hadoop之間不同之處在于它們的工作處理方式。Hadoop在本質(zhì)上是一個(gè)批處理系統(tǒng),數(shù)據(jù)被引入 Hadoop 文件系統(tǒng) (HDFS) 并分發(fā)到各個(gè)節(jié)點(diǎn)進(jìn)行處理。當(dāng)處理完成時(shí),結(jié)果數(shù)據(jù)返回到 HDFS 供始發(fā)者使用。Storm 支持創(chuàng)建拓?fù)浣Y(jié)構(gòu)來轉(zhuǎn)換沒有終點(diǎn)的數(shù)據(jù)流,這些轉(zhuǎn)換從不停止,它們會(huì)持續(xù)處理到達(dá)的數(shù)據(jù)。
當(dāng)然,我們?cè)谡fHadoop不適合處理實(shí)時(shí)數(shù)據(jù)的時(shí)候也得加上一個(gè)前提,那就是這個(gè)需要被處理的實(shí)時(shí)數(shù)據(jù)得足夠大,如果只是一般量的話,Hadoop還是應(yīng)付得了的。(編輯/有慶)