天天看點

hadoop總結-程序&功能

namenode :

  • Namenode是一個中心伺服器,負責管理檔案系統的名字空間(namespace)以及用戶端對檔案的通路。
  • 控制副本放在哪些datanode上,讀取時優先讀取最近的,降低塊消耗和讀取時延。
  • 周期性接受datanode的信條資訊和塊狀态報告(包含包含datanode的所有資料塊清單)。

它維護着檔案系統樹檔案夾的中繼資料,中繼資料包括:

fsimage:快照,存儲某一時段NameNode記憶體中繼資料資訊;

edits:記錄檔檔案;

Namenode是所有HDFS中繼資料的仲裁者和管理者,使用者資料永遠不會流過Namenode。

安全模式:

Namenode啟動後會進入一個稱為安全模式的特殊狀态。處于安全模式的Namenode是不會進行資料塊的複制的。Namenode從所有的 Datanode接收心跳信号和塊狀态報告。塊狀态報告包括了某個Datanode所有的資料塊清單。每個資料塊都有一個指定的最小副本數。當Namenode檢測确認某個資料塊的副本數目達到這個最小值,那麼該資料塊就會被認為是副本安全(safely replicated)的;在一定百分比(這個參數可配置)的資料塊被Namenode檢測确認是安全之後(加上一個額外的30秒等待時間),Namenode将退出安全模式狀态。接下來它會确定還有哪些資料塊的副本沒有達到指定數目,并将這些資料塊複制到其他Datanode上。

#退出安全模式
hadoop dfsadmin -safemode leave
           

namenode & secondarynamenode 資料持久化:

  • 對于任何對檔案系統中繼資料産生修改的操作,Namenode都會使用一種稱為EditLog的事務日志記錄下來。
  • Namenode在本地作業系統的檔案系統中存儲這個Editlog。整個檔案系統的名字空間,包括資料塊到檔案的映射、檔案的屬性等,都存儲在一個稱為Fsimage的檔案中,這個檔案也是放在Namenode所在的本地檔案系統上。
  • 當Namenode啟動時,它從硬碟中讀取Edits和FsImage,将所有Edits中的事務作用在記憶體中的FsImage上,并将這個新版本的FsImage從記憶體中儲存到本地磁盤上,然後删除舊的Edits,因為這個舊的Edits的事務都已經作用在FsImage上了。這個過程稱為一個檢查點(checkpoint)。
然而,這樣下去不行,每次啟動都要讀取Editlog和FsImage,一段時間後edits變得非常大,影響效率。是以,secondarynamenode 出來了。
  • secondarynamenode會周期性(定時|超過大小)讀取namenode的 edits

    然後更新自己的fsimage。拷貝更新後的快照,到namenode替換fsimage,最後把edits換了。就是,secondarynamenode分擔了namenode的部分工作,給它做了,進而減輕負擔,提高效率。

secondarynamenode

  • 是namenode的冷備,減少啟動時間。
  • Secondary Namenode 運作在一個單獨的實體機上,因為合并操作需要占用大量的CPU時間以及和Namenode相當的記憶體。
  • 執行命名空間的定期檢查點,并幫助将包含HDFS修改日志的檔案大小保持在NameNode的特定限制内。
  • 在Namenode當機時,資料丢失是不可避免的。在這種情況下,一般把遠端挂載的網絡檔案系統(NFS)中的Namenode的中繼資料檔案來使用,把NFS中的Namenode中繼資料檔案,拷貝到輔助Namenode,并把輔助Namenode作為主Namenode來運作。

DataNode

  • 叢集中的Datanode一般是一個節點一個,負責管理它所在節點上的存儲,處理檔案内容的讀寫請求,跟檔案相關的資料流不經過namenode,會詢問與哪些datanode聯系,防止namenode成為系統瓶頸。
  • 通過向NameNode發送心跳保持與其聯系(3秒一次)
  • 如果10分鐘沒有收到DataNode的心跳,則認為它挂了。

ResourceManager

在YARN中,ResourceManager負責叢集中所有資源的統一管理和配置設定,它将各個資源部分(計算、記憶體、帶寬等)精心安排給基礎 NodeManager(YARN 的每節點代理)。ResourceManager 還與 ApplicationMaster 一起配置設定資源,與 NodeManager 一起啟動和監視它們的基礎應用程式。

nodemanager

nodemanager是ResourceManager安排在節點上的小弟,負責容器管理,監控,将情況向ResourceManager報告。

checkpointnode

定期地建立命名空間的檢查點,CheckpointNode與NameNode通常運作在不同的機器上,記憶體與NameNode的記憶體一樣大小,一個NameNode可以同時配置多個Checkpoint Node。

編輯core-site.xml 增加checkpoint相關配置

fs.checkpoint.dir

fs.checkpoint.period

fs.checkpoint.size

backupnode

比 checkpointnode 更實用于恢複,在記憶體中保留與NameNode一樣的中繼資料。

BackupNode在記憶體中維護了一份從NameNode同步過來的fsimage,它還從namenode接收edits檔案的日志流,定期把它們持久化到硬碟。

NameNode,隻允許配置一個BackupNode,而且利用Backupnode模式就不允許登入CheckPointNode了 
 # *********************************在此記一下,遇到好處理*********************
           

配置在 hdfs-site.xml

dfs.backup.address

dfs.backup.http.address

// 執行指令
hadoop namenode -backup
           

繼續閱讀