Hadoop源碼解讀之(一)>>>>>>>>>>NameNode

Hadoop源碼解讀之(一)>>>>>>>>>>NameNode


    正如大多數源碼解讀,第一篇爲NameNode的解析。


    首先將NameNode註釋翻譯一下,大概意思如下:

 

    1.NameNode 服務器有兩個作用:

        a.目錄名稱空間的管理者

        b.維護 hadoop 分佈式系統的“inode table”

    2.NameNode維護着兩個關鍵的對應關係

        a.文件名和block 塊

        b.block 塊和其對應的存儲機器

        其中:第一個對應關係存儲在磁盤中,第二個對應關係在每次NameNode啓動的時候被加載到內存中。

    3.NameNode主要的工作是向外界暴露IPC接口、HTTP服務和一些參數管理


    4.NameNode實現了3個接口:

        a.ClientProtocol:允許Client請求服務,但是ClientProtocol不是被用來讓最終用戶使用的,最終用戶使用FileSystem來對HDFS進行操作。

        b.DatanodeProtocol:DataNode使用該接口來存儲block塊,這些方法被DataNode調用。

        c.NamenodeProtocol:該接口被secondary namenode或者balance進程調用去獲取局部的NameNode信息,如局部的blockMap等。


----解釋完註釋,來看一下代碼內容----

    首先找見NameNode的構造函數

    

    public NameNode(Configuration conf) throws IOException {
    this(conf, NamenodeRole.NAMENODE);
  }
    protected NameNode(Configuration conf, NamenodeRole role) 
      throws IOException

    可以看出最終NameNode實例化走的都是後者。

    

    下面進入main方法:

    

    找見最重要的一句話 

NameNode namenode = createNameNode(argv, null);

    點進去,然後是switch代碼塊,這裏就是我們在命令行裏面敲hdfs dfs -X的解析部分。

    

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