教你一步一步分析Hadoop NameNode啓動流程

NameNode服務端的啓動過程

不知道大家是否自己搭建過Hadoop集羣,如果搭建過是否還記得Hadoop NameNode的啓動命令呢?下面是Linux服務器上啓動NameNode的命令。

[root@hadoop01 sbin]# hadoop-daemon.sh start namenode

既然是通過hadoop-daemon.s進行啓動,那麼我們可以看看這個shell腳本是怎麼啓動NameNode的呢?

 

由此可知是調用hdfs的腳本的,那麼我們再進去hdfs腳本一探究竟吧

 

從中,我們可以看出最終啓動的入口是org.apache.hadoop.hdfs.server.namenode.NameNode。我們先來看看源碼中關於NameNode的介紹吧。

NameNode作用分析

 

  • 兩個關鍵的就是

1. filename -> blocksequence (namespace) 

文件到block的映射,上傳的文件被切分爲多個block(128m),這份映射數據就          是namespace,存儲在磁盤上。

2. block -> machinelist (inodes)

block到datanode的映射,每個block都會分配給一個datanode,每個block還          有3個副本,也就是每個block對應多個datanode,這個映射數據就是inodes。       在NameNode每次啓動的時候,由datanode彙報過來的。

  • NameNode既指這個類,也指'NameNode server。 FSNamesystem "類實際上執行了大部分的文件系統管理。 NameNode "類本身的大部分內容是向外界展示IPC接口和HTTP服務器,以及一些配置管理。

  • NameNode實現了ClientProtocol接口,這個接口允許客戶端請求DFS服務。ClientProtocol不是爲DFS客戶端直接使用而設計的,終端用戶應該使用FileSystem

  • NameNode實現了DatanodeProtocol接口,被存儲DFS數據庫的DataNode使用。

NameNode入口

下面NameNode.main()是入口函數

 

由上面代碼可知,createNameNode(argv, null)方法對NameNode進行實例化 ,今天就先寫到這,下篇文章將繼續講解NaNode的初始化。

 

下面是一張NameNode啓動流程的思維導圖,有興趣的關注我獲取。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章