今天跟一個朋友在討論hadoop體系架構,從當下流行的Hadoop+HDFS+MapReduce+Hbase+Pig+Hive+Spark+Storm開始一直講到HDFS的底層實現,MapReduce的模型計算,到一個雲盤如何實現,再到Google分佈式史上那最偉大的三篇文章。html
這幾個名詞剛問到初學者的時候確定會一臉懵逼包括我本身,整個Hadoop家族成員不少,「勢力」很龐大,下面畫個圖,簡單歸納下。數據庫
到這裏本文內容已結束,下文是摘自網絡上一些比較經典或者淺顯易懂的相關文字,有興趣的繼續往下看。對初學者來講,若是上圖能大概看懂,那下面的內容能更有利於你理解。編程
Google的分佈式計算三駕馬車:安全
Hadoop的創始源頭在於當年Google發佈的3篇文章,被稱爲Google的分佈式計算三駕馬車。服務器
Google File System(中文,英文)用來解決數據存儲的問題,採用N多臺廉價的電腦,使用冗餘(也就是一份文件保存多份在不一樣的電腦之上)的方式,來取得讀寫速度與數據安全並存的結果。網絡
Map-Reduce說穿了就是函數式編程,把全部的操做都分紅兩類,map與reduce,map用來將數據分紅多份,分開處理,reduce將處理後的結果進行歸併,獲得最終的結果。可是在其中解決了容錯性的問題。架構
BigTable是在分佈式系統上存儲結構化數據的一個解決方案,解決了巨大的Table的管理、負載均衡的問題。負載均衡
Doug Cutting:框架
Doug Cutting以前是一個很是有名的開源社區的人,創造了nutch與lucene(如今都是在Apache基金會下面的),nutch以前就實現了一個分佈式的爬蟲抓取系統。等Google的三駕馬車發佈後,Doug Cutting一看,挖靠這麼厲害的技術,因而就實現了一個DFS(distributed file system)與Map-Reduce(大牛風範啊),集成進了Nutch,做爲Nutch的一個子項目存在。那時,是2004年左右。分佈式
在互聯網這個領域一直有這樣的說法:
「若是老二沒法打敗老大,那麼就把老大賴以生存的東西開源吧」
當年與Google仍是處在強烈競爭關係的Yahoo!因而招了Doug兄進來,把老大賴以生存的DFS與Map-Reduce開源了。開始了Hadoop的童年時期。差很少在2008年的時候,Hadoop纔算逐漸成熟。
GFS+MapReduce+Bigtable之間的關係:
知乎上有個回答的很形象:
Hadoop是不少組件的集合,主要包括但不限於MapReduce,HDFS,HBase,ZooKeeper。MapReduce模仿了Google MapReduce,HDFS模仿了Google File System,HBase模仿了Google BigTable,ZooKeeper或多或少模仿了Google Chubby(沒有前3個出名),因此下文就只提MapReduce、HDFS、HBase、ZooKeeper吧。
簡單來說,因此,Hadoop和Storm都是分佈式環境下的計算平臺,不過前者依賴外存,適應批處理情形,後者依賴內存,適應實時處理、超低延遲、無需大量存儲數據情形。前類出現的時間較早(03年GFS的論文),後類出現的時間較晚(10年Yahoo! S4的論文)。我不大讚同「Storm改進了Hadoop的缺點」的說法——這種說法有點像「輪船改進了汽車的哪些缺點」——由於它們自己即不太同類。Storm和Hadoop有不少類似也有不少區別,適用的場景是不同的,主要取決於使用者本身的需求。
*上面不少敘述方法是爲了讀者的更好理解,不盡徹底準確,好比HBase是有內存緩衝機制的,並不是只依賴外存,再好比Nimbus實質上是某個節點上的守護進程,而非節點自己。
大數據技術領域:
大數據平臺架構:
數據處理基礎架構
技術架構
參考文獻:
分佈式系統漫談—Google三駕馬車: GFS,mapreduce,Bigtable
大數據Hadoop核心架構HDFS+MapReduce+Hbase+Hive內部機理詳解
http://www.oschina.net/p/hbase