HDFS的體系結(jié)構(gòu)圖

NameNode和DataNode都被設(shè)計成可以在普通商用計算機(jī)上運行。這些計算機(jī)通常運行的是GNU/Linux操作系統(tǒng)。HDFS采用 Java語言開發(fā),因此任何支持Java的機(jī)器都可以部署NameNode和DataNode。一個典型的部署場景是集群中的一臺機(jī)器運行一個 NameNode實例,其他機(jī)器分別運行一個DataNode實例。當(dāng)然,并不排除一臺機(jī)器運行多個DataNode實例的情況。集群中單一的 NameNode的設(shè)計則大大簡化了系統(tǒng)的架構(gòu)。NameNode是所有HDFS元數(shù)據(jù)的管理者,用戶數(shù)據(jù)永遠(yuǎn)不會經(jīng)過NameNode。

MapReduce的體系結(jié)構(gòu)

接下來介紹MapReduce的體系結(jié)構(gòu),MapReduce是一種并行編程模式,這種模式使得軟件開發(fā)者可以輕松地編寫出分布式并行程序。在 Hadoop的體系結(jié)構(gòu)中,MapReduce是一個簡單易用的軟件框架,基于它可以將任務(wù)分發(fā)到由上千臺商用機(jī)器組成的集群上,并以一種高容錯的方式并行處理大量的數(shù)據(jù)集,實現(xiàn)Hadoop的并行任務(wù)處理功能。MapReduce框架是由一個單獨運行在主節(jié)點上的JobTracker和運行在每個集群從節(jié)點上的TaskTracker共同組成的。主節(jié)點負(fù)責(zé)調(diào)度構(gòu)成一個作業(yè)的所有任務(wù),這些任務(wù)分布在不同的從節(jié)點上。主節(jié)點監(jiān)控它們的執(zhí)行情況,并且重新執(zhí)行之前失敗的任務(wù);從節(jié)點僅負(fù)責(zé)由主節(jié)點指派的任務(wù)。當(dāng)一個Job被提交時,JobTracker接收到提交作業(yè)和配置信息之后,就會將配置信息等分發(fā)給從節(jié)點,同時調(diào)度任務(wù)并監(jiān)控TaskTracker的執(zhí)行。

從上面的介紹可以看出,HDFS和MapReduce共同組成了Hadoop分布式系統(tǒng)體系結(jié)構(gòu)的核心。HDFS在集群上實現(xiàn)了分布式文件系統(tǒng),MapReduce在集群上實現(xiàn)了分布式計算和任務(wù)處理。HDFS在MapReduce任務(wù)處理過程中提供了文件操作和存儲等支持,MapReduce在HDFS的基礎(chǔ)上實現(xiàn)了任務(wù)的分發(fā)、跟蹤、執(zhí)行等工作,并收集結(jié)果,二者相互作用,完成了Hadoop分布式集群的主要任務(wù)。

分享到

cuihao

相關(guān)推薦