1.NameNode(管理節(jié)點)
Namenode 管理著文件系統(tǒng)的命令空間(Namespace)。它維護著文件系統(tǒng)樹以及文件樹中所有的文件和文件夾的元數(shù)據(jù)(metadata)们何,元數(shù)據(jù)包括編輯日志(edits)和鏡像文件萄焦。管理這些信息的文件有兩個,分別是Namespace 鏡像文件(fsimage)和編輯日志文件冤竹,編輯日志主要是記錄對hdfs進行的修改拂封。鏡像文件主要是記錄hdfs的文件樹形結(jié)構(gòu)。這些信息被Cache在RAM中鹦蠕,當然冒签,這兩個文件也會被持久化存儲在本地硬盤。Namenode記錄著每個文件中各個塊所在的數(shù)據(jù)節(jié)點的位置信息钟病,但是他并不持久化存儲這些信息萧恕,因為這些信息會在系統(tǒng)啟動時從數(shù)據(jù)節(jié)點重建刚梭。
2.DataNode(工作節(jié)點)
Datanode是文件系統(tǒng)的工作節(jié)點,他們根據(jù)客戶端或者是namenode的調(diào)度存儲和檢索數(shù)據(jù)票唆,并且定期向namenode發(fā)送他們所存儲的塊(block)的列表朴读。沒有namenode,文件系統(tǒng)是無法使用的。事實上,如果運行namenode服務的服務器壞掉,文件系統(tǒng)上的所有文件將會丟失走趋。因為我們不知道如何根據(jù)DataNode的塊進行重建文件衅金。所有對NameNode進行容錯冗余機制是非常重要的。
集群中的從節(jié)點服務器都運行一個DataNode后臺程序簿煌,這個后臺程序負責把HDFS數(shù)據(jù)塊讀寫到本地的文件系統(tǒng)氮唯。當需要通過客戶端讀/寫某個數(shù)據(jù)時,先由NameNode告訴客戶端去哪個DataNode進行具體的讀/寫操作啦吧,然后客戶端直接與這個DataNode服務器上的后臺程序進行通信您觉,并且對相關的數(shù)據(jù)塊進行讀/寫操作。
3.secondary NameNode(相當于MySQL數(shù)據(jù)庫中主從復制的從節(jié)點)
Secondary NameNode是一個用來監(jiān)控HDFS狀態(tài)的輔助后臺程序授滓。和NameNode一樣琳水,每個集群都有一個Secondary NameNode,并且部署在一個單獨的服務器上般堆。Secondary NameNode不同于NameNode在孝,它不接受或者記錄任何實時的數(shù)據(jù)變化,但是淮摔,它會與NameNode進行通信私沮,以便定期地保存HDFS元數(shù)據(jù)的快照。由于NameNode是單點的和橙,通過Secondary NameNode的快照功能仔燕,可以將NameNode的宕機時間和數(shù)據(jù)損失降低到最小。同時魔招,如果NameNode發(fā)生問題晰搀,Secondary NameNode可以及時地作為備用NameNode使用。
4.ResourceManager
ResourceManage 即資源管理办斑,在YARN中外恕,ResourceManager負責集群中所有資源的統(tǒng)一管理和分配,它接收來自各個節(jié)點(NodeManager)的資源匯報信息乡翅,并把這些信息按照一定的策略分配給各個應用程序(實際上是ApplicationManager)鳞疲。
RM包括Scheduler(定時調(diào)度器)和ApplicationManager(應用管理器)Schedular負責向應用程序分配資源,它不做監(jiān)控以及應用程序的狀態(tài)跟蹤蠕蚜,并且不保證會重啟應用程序本身或者硬件出錯而執(zhí)行失敗的應用程序尚洽。ApplicationManager負責接受新的任務,協(xié)調(diào)并提供在ApplicationMaster容器失敗時的重啟功能.每個應用程序的AM負責項Scheduler申請資源靶累,以及跟蹤這些資源的使用情況和資源調(diào)度的監(jiān)控翎朱。
5.Nodemanager
NM是ResourceManager在slave機器上的代理橄维,負責容器管理,并監(jiān)控它們的資源使用情況拴曲,以及向ResourceManager/Scheduler提供資源使用報告争舞。