李榮富
Hadoop是如今大數據革命的代表性技術,做Hadoop相關產品有很多,其中有很多不一樣的選擇和變種,比較知名的有Cloudera、Hortonwork、亞馬遜EMR、Storm和Spark。這些都是Hadoop的忠實“粉絲”。
想要搞清楚大數據和Hadoop的關系,我們還得先認識一下Hadoop。
一種數據存儲和分析的方法
如何理解Hadoop呢?官方給的定義是這樣的:作為一種軟件庫,Hadoop允許在集群服務器上使用簡單的編程模型對大數據集進行分布式處理。它被設計成能夠從單臺服務器擴展到數以千計的服務器,每臺服務器都有本地的計算和存儲資源。Hadoop的高可用性并不依賴硬件,其代碼庫自身就能在應用層偵測并處理硬件故障,因此能基于服務器集群提供高可用性的服務。
對于非專業人員,這個解釋顯得比較晦澀,我們從“系統”這個角度來理解。Hadoop是一個分布式系統,這種系統的結構特點是表面上看起來是一個整體,實際上它的各個模塊和數據都具有高度的自治獨立性,系統中的若干臺計算機可以互相協作來完成一個共同的任務,或者說一個程序可以分布在幾臺計算機上并行地運行。比如說我們平時使用的萬維網就是一個很好的分布式系統的例子,表面看起來它是一個整體,實際上網頁中很多不同的部分都是獨立工作的。
具體到Hadoop中,我們會發現它的“獨立性”做得更徹底, Hadoop中幾乎所有的功能都是獨立模塊化的,也就是說具體在應用中使用者可以用其他軟件抽掉或替代那些不需要的模塊,這使得Hadoop的“兼容性”變得很高。
如果Hadoop還是沒給你留下深刻的印象的話,那么你只要記住,這個系統是由兩個部分構成的,一個是數據處理框架,另一個是分布式數據存儲文件系統(HDFS)。大數據存在HDFS中,需要用的時候就從這里拿到數據處理框架里面處理。
大數據為何離不開它
我們這里說的“大數據離不開Hadoop”其實是相對而言的,從技術上來說,大數據的處理非得Hadoop嗎?那倒不是,在Hadoop出現之前很多企業已經開始處理大數據啦。不過,這些企業僅限于大企業,因為只有他們有能力購買處理大數據的大型機器。
但是,大數據要想做出更多貢獻,必須讓更多的組織機構參與進來,在時代的呼喚下,一種成本相對較低的能夠處理大數據的系統就呼之欲出。這時候Google站了出來,他們的工程師經過多番探討實踐,最后做出了Hadoop!
Hadoop的出現在大數據發展史上是有里程碑意義的,因為它的出現把大數據的應用從小眾變成了大眾。最直接的體現就是它降低了大數據處理成本!
首先,企業不用花太多錢在服務器硬件成本上,一般廉價的服務器也足以支撐起Hadoop。

其次,在軟件使用上Hadoop不像是昂貴的“大型機”——昂貴且很多東西不開放。Hadoop不僅對用戶開放源代碼和協議,可供自由修改,最主要的是,這些東西的使用時成本相對低廉的。
再次,Hadoop出自Google工程師之手,工程師們使用的時候都是二次開發,其本身的結構合理性、安全性都有保障,在日常維護上的成本低了很多。當然,這里還有一個“后天”累計而成的優勢不得不提,Hadoop自從出現之后就受到了熱捧,目前工程師們已經自發的形成了非常熱鬧的討論社區,新手在入門的時候可以享受到友好的學習環境和進階環境。
缺陷:不適合處理實時數據
Twitter在使用了Hadoop處理大數據后,他們又推出了自己的自己的另外一個系統——Storm,因為Hadoop并不適合處理實時大數據,但在Twitter上用戶每天就要生成1.4億條新的推文。
相比較起來,雖然Hadoop吞吐數據的量比Storm大,但Storm在時延上比要比Hadoop優得多,在實時數據較多的業務場景下,當然是Storm比較合適。這還得從它們的工作本質說起。
Storm 與Hadoop之間不同之處在于它們的工作處理方式。Hadoop在本質上是一個批處理系統,數據被引入 Hadoop 文件系統 (HDFS) 并分發到各個節點進行處理。當處理完成時,結果數據返回到 HDFS 供始發者使用。Storm 支持創建拓撲結構來轉換沒有終點的數據流,這些轉換從不停止,它們會持續處理到達的數據。
當然,我們在說Hadoop不適合處理實時數據的時候也得加上一個前提,那就是這個需要被處理的實時數據得足夠大,如果只是一般量的話,Hadoop還是應付得了的。(編輯/有慶)