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

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