轉(zhuǎn)帖|使用教程|編輯:龔雪|2014-08-01 11:36:49.000|閱讀 1618 次
概述:作為Hadoop教程的第一個(gè)系列,本篇圖文介紹了Hadoop的起源和體系構(gòu)架。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
1.Hadoop 發(fā)展歷史
1.1 Hadoop 產(chǎn)生背景
Hadoop最早起源于Nutch。Nutch是一個(gè)開(kāi)源的網(wǎng)絡(luò)搜索引擎,始于2002年,Nutch的設(shè)計(jì)目標(biāo)是構(gòu)建一個(gè)大型的全網(wǎng)搜索引擎,包括抓取網(wǎng)頁(yè),索引,查詢等,但是隨著數(shù)據(jù)量的增加,遇到了擴(kuò)展問(wèn)題。直至2003年google發(fā)表了一篇關(guān)于google的文件系統(tǒng)GFS,該論文描述了google搜索引擎網(wǎng)頁(yè)數(shù)據(jù)的存儲(chǔ)架構(gòu),該架構(gòu)解決了Nutch遇到的問(wèn)題,隨即實(shí)現(xiàn)了自己的分布式文件系統(tǒng),即NDFS(此間google只是開(kāi)源思想,但并未開(kāi)源代碼),到了2004年的google的另一篇論文MapReduce:simplified data processing on large cluster ,震驚世界,該論文描述了分布式計(jì)算的框架,但也只是開(kāi)源思想,并不開(kāi)源代碼,Nutch的開(kāi)發(fā)人員靠自己完成了實(shí)現(xiàn),由于NDFS和MapReduce 的成功,2006年Nutch的開(kāi)發(fā)人員,隨即將其移出Nutch,成為L(zhǎng)ucene的子項(xiàng)目,稱為Hadoop(據(jù)說(shuō)是Doug Cutting兒子的玩具大象的名字),隨著Hadoop的發(fā)展,2008年,Hadoop已經(jīng)成為Apache基金會(huì)的頂級(jí)項(xiàng)目,也促生了Hadoop家族其他項(xiàng)目的發(fā)展。
1.2 Hadoop思想之源
Hadoop的思想主要來(lái)源于google,此間google的倆大論文GFS,MapReduce起了決定性的作用,而google的低成本之道(不使用超級(jí)計(jì)算機(jī),不用存儲(chǔ);大量使用PC server,提供冗余的集群服務(wù)...)也是成功的根本。而google的成功也得益于Page Rank算法。
更加詳盡有關(guān)Page Rank可以參考://blog.csdn.net/v_july_v/article/details/6142146
目前hadoop發(fā)展迅速,是實(shí)現(xiàn)云計(jì)算標(biāo)準(zhǔn)開(kāi)源軟件,已經(jīng)可以在數(shù)千節(jié)點(diǎn)上面運(yùn)行,處理數(shù)據(jù)量和速度有很可觀的效果。同時(shí),hadoop家族的項(xiàng)目也得到了相應(yīng)的發(fā)展。
2 Hadoop的架構(gòu)
2.1 Hadoop的倆大支柱:HDFS和MapReduce
其中HDFS用于大規(guī)模數(shù)據(jù)的分布式存儲(chǔ),而MapReduce則構(gòu)建在HDFS之上,對(duì)數(shù)據(jù)進(jìn)行分布式計(jì)算。
2.1 HDFS架構(gòu)
HDFS是一個(gè)具有高容錯(cuò)性的分布式系統(tǒng),適合部署在廉價(jià)的機(jī)器上,HDFS可以提供高吞吐量的數(shù)據(jù)訪問(wèn),適合大數(shù)據(jù)集的應(yīng)用,主要有client,NameNode,SecondaryNameNode,DataNode幾個(gè)組件構(gòu)成。
client:通過(guò)于NameNode于DataNode交互訪問(wèn)HDFS文件。
NameNode:HDFS的守護(hù)程序,是個(gè)“總管”,記錄文件是如何分割成數(shù)據(jù)塊的,以及這些數(shù)據(jù)塊存儲(chǔ)到哪些節(jié)點(diǎn),對(duì)IO和內(nèi)存進(jìn)行集中管理,且是個(gè)單點(diǎn)。
SecondaryNameNode:監(jiān)控HDFS狀態(tài)的輔助后臺(tái)程序,每個(gè)集群都有一個(gè),與NameNode進(jìn)行通訊,定期存儲(chǔ)HDFS元數(shù)據(jù)快照,并且在NameNode故障的時(shí)候,提供備份作用。
DataNode:負(fù)責(zé)把HDFS數(shù)據(jù)塊讀寫到本地文件系統(tǒng),并將數(shù)據(jù)定期匯報(bào)給NameNode,DataNode以固定大小的block(默認(rèn)64MB)為基本單位。
2.2 MapReduce 架構(gòu)
同HDFS一樣,MR也采用了Master/Slave模式,有以下組件:client,JobTracker,TaskTracker,Task.
JobTracker:負(fù)責(zé)資源監(jiān)控和作業(yè)調(diào)度,運(yùn)行主節(jié)點(diǎn),對(duì)HDFS總控,決定哪些文件an參與處理,然后分割task并分配節(jié)點(diǎn),重啟失敗的task等
TaskTracker:位于slave節(jié)點(diǎn)上,與datanode結(jié)合,管理各自節(jié)點(diǎn)上的task,與JobTracker交互(周期性的通過(guò) heartbeat將資源使用情況和任務(wù)進(jìn)度匯報(bào)給jobtracker)。TaskTracker通過(guò)使用“slot”等量劃分(劃分方法用戶自己決定)節(jié)點(diǎn)上的資源量,分為Mapslot 和Reduceslot來(lái)提供Map任務(wù)和Reduce任務(wù)的使用。
Task:Map Task和Reduce Task,有TaskTracker啟動(dòng)。
Map Task流程:Map Task先將對(duì)應(yīng)的split(MapReduce處理單位)迭代解析成一個(gè)個(gè)的key/alue對(duì),依次調(diào)用map函數(shù)進(jìn)行處理,最終將臨時(shí)結(jié)果存到本地磁盤中,其臨時(shí)數(shù)據(jù)分成若干個(gè)partition,每個(gè)partition將被一個(gè)reduce task 處理。
reduce task流程:讀取partition部分,對(duì)結(jié)果排序,依次讀取,調(diào)用用戶自己的reduce函數(shù)處理,結(jié)果存到HDFS上面。
參考書籍:Hadoop實(shí)戰(zhàn),Hadoop技術(shù)內(nèi)幕 深入解析MapReduce架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理。
來(lái)源:編程大巴
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)