* Secondary NameNode:Secondary NameNode監(jiān)視HDFS集群的狀態(tài),并且對(duì)保存在NameNode中的數(shù)據(jù)拍攝快照(snapshot)。如果NameNode產(chǎn)生故障,Secondary NameNode將會(huì)被用來取代NameNode的位置。然而,這確實(shí)需要人工干預(yù),因此沒有從NameNode到Secondary NameNode的自動(dòng)失效備援(failover),但是,擁有Secondary NameNode將會(huì)確保數(shù)據(jù)丟失最小化。同NameNode一樣,每個(gè)集群也僅有一個(gè)Secondary NameNode。
* DataNode:Hadoop集群中的每個(gè)從節(jié)點(diǎn)包含一個(gè)DataNode。DataNode負(fù)責(zé)進(jìn)行數(shù)據(jù)管理:它從HDFS讀取它的數(shù)據(jù)塊,管理每個(gè)物理節(jié)點(diǎn)上的數(shù)據(jù),向NameNode報(bào)告數(shù)據(jù)管理狀態(tài)。
* JobTracker:JobTracker守護(hù)進(jìn)程是你的應(yīng)用與Hadoop本身之間的連線。每個(gè)Hadoop集群都有一個(gè)配置好的JobTracker,當(dāng)你提交代碼到Hadoop集群執(zhí)行時(shí),JobTracker負(fù)責(zé)構(gòu)建執(zhí)行計(jì)劃。執(zhí)行計(jì)劃包括決定包含操作數(shù)據(jù)的節(jié)點(diǎn)、安排節(jié)點(diǎn)之間的數(shù)據(jù)通信、監(jiān)視正在運(yùn)行的任務(wù)(task)和重新開啟任務(wù)如果任務(wù)失敗。
* TaskTracker:同數(shù)據(jù)存儲(chǔ)采用主/從(master/slave)架構(gòu)一樣,代碼執(zhí)行也采用了主/從(mater/slave)架構(gòu)。每個(gè)從節(jié)點(diǎn)擁有一個(gè)TaskTracker守護(hù)進(jìn)程(daemon),該進(jìn)程負(fù)責(zé)由JobTracker發(fā)送過來的任務(wù),并同其他JobTracker通信job狀態(tài)及心跳包。
圖1嘗試講所有這些組件一起放在一張圖中。
圖1顯示了主節(jié)點(diǎn)與從節(jié)點(diǎn)之間的關(guān)系。主節(jié)點(diǎn)包含兩個(gè)重要組件:NameNode,管理集群及負(fù)責(zé)所有數(shù)據(jù);JobTracker,負(fù)責(zé)管理被執(zhí)行的代碼和所有TaskTracker守護(hù)進(jìn)程。每個(gè)從節(jié)點(diǎn)都有TaskTracker守護(hù)進(jìn)程和DataNode守護(hù)進(jìn)程:TaskTracker從JobTracker處接收指令并執(zhí)行map和reduce步驟,而DataNode從NameNode處接收數(shù)據(jù)并管理被從節(jié)點(diǎn)包含的數(shù)據(jù)。并且理所當(dāng)然存在一個(gè)Secondary NameNode監(jiān)聽NameNode的更新。
注意:
注意圖1僅僅顯示JobTracker及NameNode同單一從節(jié)點(diǎn)通信,但實(shí)際上,它同集群內(nèi)的所有從節(jié)點(diǎn)通信。
更多詳細(xì)信息,請(qǐng)您微信關(guān)注“計(jì)算網(wǎng)”公眾號(hào):