Hadoop-DataNode的相關分析(1)

3.1  DatanodeID

這個類就是定義一下Datanode的身份證。

一個DatanodeID是由以下四部分組成的。

  protected String name;    /// 主機名:端口號

  protected String storageID; /// unique per cluster storageID

  protected int infoPort;     /// the port where the infoserver is running

  protected int ipcPort;     /// the port where the ipc server is running

   infoPortServer的一個端口號。

   ipcPortNameNodeDataNode進行連接時,或者是DataNode之間通訊的時候所使用的一個端口號。

   public DatanodeID(DatanodeID from) 這個構造函數用於拷貝另外的一個節點

   這個類主要定義了這個DataNodeHostNamePortinfoPortipcPort這些東西同時有些函數來setget他們。

   它的hashcodename.hashCode()^ storageID.hashCode(); 做了一個異或處理。

updateRegInfo(DatanodeID nodeReg) 從這句我們可以看出DatanodeID對象的域的更新可以更新它的Name和它的infoPort兩項內容,而storageID是不可更新的。

如果進行兩個DatanodeID的比較的話主要是比較他們的name,可以從下面的代碼中得出。

  public int compareTo(DatanodeID that) {

    return name.compareTo(that.getName());

  }

DatanodeID的類圖

3.1  DatanodeID的類圖

問題6:這個更新的請求是誰發出的?是由NameNode發出的嗎?

3.2  DatanodeRegistration

這個類主要用於,當DatanodeNamenode發送註冊信息時,它要向Namenode提供一些自己的註冊信息。也就是Datanode想在派出所(Namenode)辦戶口的時候,首先要填一張表給派出所。

同時這個類中還可以設置它的父類就是DatanodeIDNameinfoPortstorageInfo這些內容。

當進行註冊的時候要提供的東西,public DatanodeRegistration(String nodeName)

3.2.1  WritableFactories

 定義一個類工廠,能夠創建一個非公有的類的實例。可以看出這個類使用了單態模式。它在類中定義了一個HashMap<Class, WritableFactory> CLASS_TO_FACTORY =

new HashMap<Class, WritableFactory>();它的KeyClass,ValueWritableFactory

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