轉(zhuǎn)自洪乍;http://blog.csdn.net/woshiwanxin102213/article/details/19688393
1、Hadoop生態(tài)系統(tǒng)概況
Hadoop是一個能夠?qū)Υ罅繑?shù)據(jù)進行分布式處理的軟件框架匾乓。具有可靠、高效又谋、可伸縮的特點拼缝。
Hadoop的核心是HDFS和Mapreduce,hadoop2.0還包括YARN彰亥。
下圖為hadoop的生態(tài)系統(tǒng):
源自于Google的GFS論文,發(fā)表于2003年10月任斋,HDFS是GFS克隆版继阻。
是Hadoop體系中數(shù)據(jù)存儲管理的基礎(chǔ)。它是一個高度容錯的系統(tǒng)废酷,能檢測和應(yīng)對硬件故障瘟檩,用于在低成本的通用硬件上運行。HDFS簡化了文件的一致性模型澈蟆,通過流式數(shù)據(jù)訪問墨辛,提供高吞吐量應(yīng)用程序數(shù)據(jù)訪問功能,適合帶有大型數(shù)據(jù)集的應(yīng)用程序趴俘。
Client:切分文件睹簇;訪問HDFS奏赘;與NameNode交互,獲取文件位置信息带膀;與DataNode交互志珍,讀取和寫入數(shù)據(jù)。
NameNode:Master節(jié)點垛叨,在hadoop1.X中只有一個,管理HDFS的名稱空間和數(shù)據(jù)塊映射信息柜某,配置副本策略嗽元,處理客戶端請求。
DataNode:Slave節(jié)點喂击,存儲實際的數(shù)據(jù)剂癌,匯報存儲信息給NameNode。
Secondary NameNode:輔助NameNode翰绊,分擔(dān)其工作量佩谷;定期合并fsimage和fsedits,推送給NameNode监嗜;緊急情況下谐檀,可輔助恢復(fù)NameNode,但Secondary NameNode并非NameNode的熱備裁奇。
源自于google的MapReduce論文,發(fā)表于2004年12月刽肠,Hadoop MapReduce是google MapReduce 克隆版溃肪。
源自于google的MapReduce論文
MapReduce是一種計算模型,用以進行大數(shù)據(jù)量的計算音五。其中Map對數(shù)據(jù)集上的獨立元素進行指定的操作惫撰,生成鍵-值對形式中間結(jié)果。Reduce則對中間結(jié)果中相同“鍵”的所有“值”進行規(guī)約躺涝,以得到最終結(jié)果厨钻。MapReduce這樣的功能劃分,非常適合在大量計算機組成的分布式并行環(huán)境里進行數(shù)據(jù)處理诞挨。
JobTracker:Master節(jié)點莉撇,只有一個,管理所有作業(yè)惶傻,作業(yè)/任務(wù)的監(jiān)控棍郎、錯誤處理等;將任務(wù)分解成一系列任務(wù)银室,并分派給TaskTracker涂佃。
TaskTracker:Slave節(jié)點励翼,運行Map Task和Reduce Task;并與JobTracker交互辜荠,匯報任務(wù)狀態(tài)汽抚。
Map Task:解析每條數(shù)據(jù)記錄,傳遞給用戶編寫的map(),并執(zhí)行伯病,將輸出結(jié)果寫入本地磁盤(如果為map-only作業(yè)造烁,直接寫入HDFS)。
Reducer Task:從Map Task的執(zhí)行結(jié)果中午笛,遠程讀取輸入數(shù)據(jù)惭蟋,對數(shù)據(jù)進行排序,將數(shù)據(jù)按照分組傳遞給用戶編寫的reduce函數(shù)執(zhí)行药磺。
Mapreduce處理流程告组,以wordCount為例:
4、Hive(基于Hadoop的數(shù)據(jù)倉庫)
由facebook開源癌佩,最初用于解決海量結(jié)構(gòu)化的日志數(shù)據(jù)統(tǒng)計問題木缝。
Hive定義了一種類似SQL的查詢語言(HQL),將SQL轉(zhuǎn)化為MapReduce任務(wù)在Hadoop上執(zhí)行。
通常用于離線分析围辙。
源自Google的Bigtable論文,發(fā)表于2006年11月酌畜,HBase是Google Bigtable克隆版
HBase是一個針對結(jié)構(gòu)化數(shù)據(jù)的可伸縮怎囚、高可靠、高性能桥胞、分布式和面向列的動態(tài)模式數(shù)據(jù)庫恳守。和傳統(tǒng)關(guān)系數(shù)據(jù)庫不同,HBase采用了BigTable的數(shù)據(jù)模型:增強的稀疏排序映射表(Key/Value)贩虾,其中催烘,鍵由行關(guān)鍵字、列關(guān)鍵字和時間戳構(gòu)成缎罢。HBase提供了對大規(guī)模數(shù)據(jù)的隨機伊群、實時讀寫訪問,同時策精,HBase中保存的數(shù)據(jù)可以使用MapReduce來處理舰始,它將數(shù)據(jù)存儲和并行計算完美地結(jié)合在一起。
數(shù)據(jù)模型:Schema-->Table-->Column Family-->Column-->RowKey-->TimeStamp-->Value
6咽袜、Zookeeper(分布式協(xié)作服務(wù))
源自Google的Chubby論文丸卷,發(fā)表于2006年11月,Zookeeper是Chubby克隆版
解決分布式環(huán)境下的數(shù)據(jù)管理問題:統(tǒng)一命名询刹,狀態(tài)同步谜嫉,集群管理萎坷,配置同步等。
Sqoop是SQL-to-Hadoop的縮寫哆档,主要用于傳統(tǒng)數(shù)據(jù)庫和Hadoop之前傳輸數(shù)據(jù)。
數(shù)據(jù)的導(dǎo)入和導(dǎo)出本質(zhì)上是Mapreduce程序住闯,充分利用了MR的并行化和容錯性瓜浸。
8、Pig(基于Hadoop的數(shù)據(jù)流系統(tǒng))
由yahoo!開源比原,設(shè)計動機是提供一種基于MapReduce的ad-hoc(計算在query時發(fā)生)數(shù)據(jù)分析工具
定義了一種數(shù)據(jù)流語言—Pig Latin斟叼,將腳本轉(zhuǎn)換為MapReduce任務(wù)在Hadoop上執(zhí)行。
通常用于進行離線分析春寿。
Mahout起源于2008年忽孽,最初是Apache Lucent的子項目绑改,它在極短的時間內(nèi)取得了長足的發(fā)展,現(xiàn)在是Apache的頂級項目兄一。
Mahout的主要目標(biāo)是創(chuàng)建一些可擴展的機器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實現(xiàn)厘线,旨在幫助開發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序。Mahout現(xiàn)在已經(jīng)包含了聚類出革、分類造壮、推薦引擎(協(xié)同過濾)和頻繁集挖掘等廣泛使用的數(shù)據(jù)挖掘方法。除了算法骂束,Mahout還包含數(shù)據(jù)的輸入/輸出工具耳璧、與其他存儲系統(tǒng)(如數(shù)據(jù)庫、MongoDB 或Cassandra)集成等數(shù)據(jù)挖掘支持架構(gòu)展箱。
Cloudera開源的日志收集系統(tǒng),具有分布式混驰、高可靠攀隔、高容錯、易于定制和擴展的特點栖榨。
它將數(shù)據(jù)從產(chǎn)生昆汹、傳輸、處理并最終寫入目標(biāo)的路徑的過程抽象為數(shù)據(jù)流婴栽,在具體的數(shù)據(jù)流中满粗,數(shù)據(jù)源支持在Flume中定制數(shù)據(jù)發(fā)送方,從而支持收集各種不同協(xié)議數(shù)據(jù)居夹。同時败潦,F(xiàn)lume數(shù)據(jù)流提供對日志數(shù)據(jù)進行簡單處理的能力本冲,如過濾、格式轉(zhuǎn)換等劫扒。此外檬洞,F(xiàn)lume還具有能夠?qū)⑷罩緦懲鞣N數(shù)據(jù)目標(biāo)(可定制)的能力」导ⅲ總的來說添怔,F(xiàn)lume是一個可擴展、適合復(fù)雜環(huán)境的海量日志收集系統(tǒng)贤旷。