分散處理 Hadoop架構(gòu)服務(wù)器角色
在Hadoop運(yùn)算集群架構(gòu)中,先分解任務(wù),分工處理再匯總結(jié)果這些服務(wù)器依據(jù)用途可分成Master節(jié)點(diǎn)和Worker節(jié)點(diǎn),Master負(fù)責(zé)分配任務(wù),而Worker負(fù)責(zé)執(zhí)行任務(wù),如負(fù)責(zé)分派任務(wù)的操作,角色就像是Master節(jié)點(diǎn)。
Hadoop架構(gòu)服務(wù)器角色分工
Hadoop運(yùn)算集群中的服務(wù)器依用途分成Master節(jié)點(diǎn)和Worker節(jié)點(diǎn)。Master節(jié)點(diǎn)中安裝了JobTracker、NameNode、TaskTracker和DataNode程序,但Worker節(jié)點(diǎn)只安裝TaskTracker和DataNode。

另外在系統(tǒng)的運(yùn)行架構(gòu)上,最簡單的Hadoop架構(gòu),可以分成上層的MapReduce運(yùn)算層以及下層的HDFS數(shù)據(jù)層。
在Master節(jié)點(diǎn)的服務(wù)器中會執(zhí)行兩套程序,一個是負(fù)責(zé)安排MapReduce運(yùn)算層任務(wù)的JobTracker,以及負(fù)責(zé)管理HDFS數(shù)據(jù)層的NameNode程序。而在Worker節(jié)點(diǎn)的服務(wù)器中也有兩套程序,接受JobTracker指揮,負(fù)責(zé)執(zhí)行運(yùn)算層任務(wù)的是TaskTracker程序,而與NameNode對應(yīng)的則是DataNode程序,負(fù)責(zé)執(zhí)行數(shù)據(jù)讀寫動作,以及執(zhí)行NameNode的副本策略。
在MapReduce運(yùn)算層上,擔(dān)任Master節(jié)點(diǎn)的服務(wù)器負(fù)責(zé)分配運(yùn)算任務(wù), Master節(jié)點(diǎn)上的JobTracker程序會將 Map和Reduce程序的執(zhí)行工作,指派給Worker服務(wù)器上的TaskTracker程序,由TaskTracker負(fù)責(zé)執(zhí)行Map和Reduce工作,并將運(yùn)算結(jié)果回復(fù)給Master節(jié)點(diǎn)上的JobTracker。
在HDFS數(shù)據(jù)層上,NameNode負(fù)責(zé)管理和維護(hù)HDFS的名稱空間、并且控制文件的任何讀寫操作,同時NameNode會將要處理的數(shù)據(jù)切割成一個個文件區(qū)塊(Block),每個區(qū)塊是64MB,例如1GB的數(shù)據(jù)就會切割成16個文件區(qū)塊。NameNode還會決定每一份文件區(qū)塊要建立幾個副本,一般來說,一個文件區(qū)塊總共會復(fù)制成3份,并且會分散儲存到3個不同Worker服務(wù)器的DataNode程序中管理,只要其中任何一份文件區(qū)塊遺失或損壞,NameNode會自動尋找位于其他DataNode上的副本來回復(fù),維持3份的副本策略。
在一套Hadoop集群中,分配MapReduce任務(wù)的JobTracker只有1個,而TaskTracker可以有很多個。同樣地,負(fù)責(zé)管理HDFS文件系統(tǒng)的NameNode也只有一個,和JobTracker同樣位于Master節(jié)點(diǎn)中,而DataNode可以有很多個。
不過,Master節(jié)點(diǎn)中除了有JobTracker和NameNode以外,也會有TaskTracker和DataNode程序,也就是說Master節(jié)點(diǎn)的服務(wù)器,也可以在本地端扮演Worker角色的工作。
在部署上,因?yàn)镠adoop采用Java開發(fā),所以Master服務(wù)器除了安裝操作系統(tǒng)如Linux之外,還要安裝Java運(yùn)行環(huán)境,然后再安裝Master需要的程序,包括了NameNode、JobTracker和DataNode與TaskTracker。而在Worker服務(wù)器上,則只需安裝Linux、Java環(huán)境、DataNode和TaskTracker。