Hadoop集群中節點角色定義


Hadoop分別從兩個角度將主機划分為兩種角色。

最基本的划分原則為Master和Slave,即主人和奴隸;

第一,從HDFS的角度,將主機划分為NameNode和DataNode(在分布式文件系統中,目錄的管理很重要,管理目錄相當於主人,而NameNode就是目錄管理者);​

       NameNode是主節點,存儲文件的元數據如文件名,文件目錄結構,文件屬性(生成時間,副本數,文件權限),以及每個文件的塊列表以及塊所在的DataNode等等。它是一個中心服務器,單一節,負責管理文件系統的名字空間(namespace)以及客戶端對文件的訪問,它維護着每個文件系統樹和整棵樹內所有的文件和目錄,這些信息已兩個文件形式永久保存在本地磁盤上:命名控件鏡像文件(Fsimage)和編輯日志(Edit log)。​

        DataNode在本地文件系統存儲文件塊數據,以及塊數據的校驗和。可以創建、刪除、移動或重命名文件,當文件創建、寫入和關閉之后不能修改文件內容。一個數據塊在DataNode以文件存儲在磁盤上,包括兩個文件,一個是數據本身,一個是元數據包括數據塊的長度,塊數據的校驗和,以及時間戳。DataNode啟動后向NameNode注冊,通過后,周期性(1小時)向NameNode上報所有的塊信息。心跳是每3秒一次,心跳返回結果帶有NameNode給該DataNode的命令如復制塊數據到另一台機器,或刪除某個數據塊。如果超過10分鍾沒有收到某個DataNode 的心跳,則認為該節點不可用。

        文件操作,NameNode負責文件元數據的操作,DataNode負責處理文件內容的讀寫請求,跟文件內容相關的數據流不經過NameNode,只會詢問它跟那個DataNode聯系,否則NameNode會成為系統的瓶頸

第二,從MapReduce的角度,將主機划分JobTracker 和TaskTracker(一個job經常被划分為多個Task,從這個角度不難理解它們之間的關系)​;

         在MapReduce中作業(Job)是客戶端需要執行的工作單元,它包含了輸入數據、MapReduce程序和配置信息。Hadoop將作業分為若干個小任務(task)來執行,其中每個小任務又分為Map任務和Reduce任務。兩類節點控制着作業執行過程:一個JobTracker和多個TaskTracker。

        JobTracker主要就是調度TaskTracker來運行小任務,協調所有運行在系統上的作業。TaskTracker在運行小任務的時候,將進度報告給JobTracker,這樣一旦發生錯誤,就由JobTracker來負責調度另一個TaskTracker。TaskTracker每隔3秒向JobTracker發送心跳來詢問是否有任務可做,如有則讓你分發任務給它,此時就是slave主動向master咨詢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM