Hadoop是一個能夠對大量資料進行分布式處理的軟體架構。具有可靠、高效、可伸縮的特點。
Hadoop的核心是HDFS和Mapreduce,hadoop2.0還包括YARN。
下圖為hadoop的生态系統:

源自于Google的GFS論文,發表于2003年10月,HDFS是GFS克隆版。
是Hadoop體系中資料存儲管理的基礎。它是一個高度容錯的系統,能檢測和應對硬體故障,用于在低成本的通用硬體上運作。HDFS簡化了檔案的一緻性模型,通過流式資料通路,提供高吞吐量應用程式資料通路功能,适合帶有大型資料集的應用程式。
Client:切分檔案;通路HDFS;與NameNode互動,擷取檔案位置資訊;與DataNode互動,讀取和寫入資料。
NameNode:Master節點,在hadoop1.X中隻有一個,管理HDFS的名稱空間和資料塊映射資訊,配置副本政策,處理用戶端請求。
DataNode:Slave節點,存儲實際的資料,彙報存儲資訊給NameNode。
Secondary NameNode:輔助NameNode,分擔其工作量;定期合并fsimage和fsedits,推送給NameNode;緊急情況下,可輔助恢複NameNode,但Secondary NameNode并非NameNode的熱備。
源自于google的MapReduce論文,發表于2004年12月,Hadoop MapReduce是google MapReduce 克隆版。
源自于google的MapReduce論文
MapReduce是一種計算模型,用以進行大資料量的計算。其中Map對資料集上的獨立元素進行指定的操作,生成鍵-值對形式中間結果。Reduce則對中間結果中相同“鍵”的所有“值”進行規約,以得到最終結果。MapReduce這樣的功能劃分,非常适合在大量計算機組成的分布式并行環境裡進行資料處理。
JobTracker:Master節點,隻有一個,管理所有作業,作業/任務的監控、錯誤處理等;将任務分解成一系列任務,并分派給TaskTracker。
TaskTracker:Slave節點,運作Map Task和Reduce Task;并與JobTracker互動,彙報任務狀态。
Map Task:解析每條資料記錄,傳遞給使用者編寫的map(),并執行,将輸出結果寫入本地磁盤(如果為map-only作業,直接寫入HDFS)。
Reducer Task:從Map Task的執行結果中,遠端讀取輸入資料,對資料進行排序,将資料按照分組傳遞給使用者編寫的reduce函數執行。
Mapreduce處理流程,以wordCount為例:
由facebook開源,最初用于解決海量結構化的日志資料統計問題。
Hive定義了一種類似SQL的查詢語言(HQL),将SQL轉化為MapReduce任務在Hadoop上執行。
通常用于離線分析。
源自Google的Bigtable論文,發表于2006年11月,HBase是Google Bigtable克隆版
HBase是一個針對結構化資料的可伸縮、高可靠、高性能、分布式和面向列的動态模式資料庫。和傳統關系資料庫不同,HBase采用了BigTable的資料模型:增強的稀疏排序映射表(Key/Value),其中,鍵由行關鍵字、列關鍵字和時間戳構成。HBase提供了對大規模資料的随機、實時讀寫通路,同時,HBase中儲存的資料可以使用MapReduce來處理,它将資料存儲和并行計算完美地結合在一起。
資料模型:Schema-->Table-->Column Family-->Column-->RowKey-->TimeStamp-->Value
源自Google的Chubby論文,發表于2006年11月,Zookeeper是Chubby克隆版
解決分布式環境下的資料管理問題:統一命名,狀态同步,叢集管理,配置同步等。
Sqoop是SQL-to-Hadoop的縮寫,主要用于傳統資料庫和Hadoop之前傳輸資料。
資料的導入和導出本質上是Mapreduce程式,充分利用了MR的并行化和容錯性。
由yahoo!開源,設計動機是提供一種基于MapReduce的ad-hoc(計算在query時發生)資料分析工具
定義了一種資料流語言—Pig Latin,将腳本轉換為MapReduce任務在Hadoop上執行。
通常用于進行離線分析。
Mahout起源于2008年,最初是Apache Lucent的子項目,它在極短的時間内取得了長足的發展,現在是Apache的頂級項目。
Mahout的主要目标是建立一些可擴充的機器學習領域經典算法的實作,旨在幫助開發人員更加友善快捷地建立智能應用程式。Mahout現在已經包含了聚類、分類、推薦引擎(協同過濾)和頻繁集挖掘等廣泛使用的資料挖掘方法。除了算法,Mahout還包含資料的輸入/輸出工具、與其他存儲系統(如資料庫、MongoDB 或Cassandra)內建等資料挖掘支援架構。
Cloudera開源的日志收集系統,具有分布式、高可靠、高容錯、易于定制和擴充的特點。
它将資料從産生、傳輸、處理并最終寫入目标的路徑的過程抽象為資料流,在具體的資料流中,資料源支援在Flume中定制資料發送方,進而支援收集各種不同協定資料。同時,Flume資料流提供對日志資料進行簡單處理的能力,如過濾、格式轉換等。此外,Flume還具有能夠将日志寫往各種資料目标(可定制)的能力。總的來說,Flume是一個可擴充、适合複雜環境的海量日志收集系統。
文章可以轉載,必須以連結形式标明出處。
本文轉自 張沖andy 部落格園部落格,原文連結:http://www.cnblogs.com/andy6/p/7486049.html ,如需轉載請自行聯系原作者