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

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

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

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

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

分享到

cuihao

相關(guān)推薦