DatanodeID

DatanodeID

public String name;    
/// 内容存放 :“hostname:portNumber” 也可以没有端口
///name 的值配置在这个 hdfs-site.xml的{dfs.datanode.address}

public String storageID;
/// 存放介质 不同机器存放不同介质。
protected int infoPort;   
/// infoserver 的端口
  public int ipcPort;   
/// ipc server 端口

方法:

读出主机ip
  public String getHost() {
    int colon = name.indexOf(":");
    if (colon < 0) {
      return name;
    } else {
      return name.substring(0, colon);
    }
  }
  读出主机端口 默认是50010
  public int getPort() {
    int colon = name.indexOf(":");
    if (colon < 0) {
      return 50010; // default port.
    }
    return Integer.parseInt(name.substring(colon+1));
  }


equals和hashCode 由name 和storageID共同决定

public boolean equals(Object to) {
    if (this == to) {
      return true;
    }
    if (!(to instanceof DatanodeID)) {
      return false;
    }
    return (name.equals(((DatanodeID)to).getName()) &&
            storageID.equals(((DatanodeID)to).getStorageID()));
  }
 
  public int hashCode() {
    return name.hashCode()^ storageID.hashCode();
  }

  因为介质不可能发生改变。 所以updateRegInfo只有三个参数
  public void updateRegInfo(DatanodeID nodeReg) {
    name = nodeReg.getName();
    infoPort = nodeReg.getInfoPort();
    ipcPort = nodeReg.getIpcPort();
    // update any more fields added in future.
  }

你可能感兴趣的:(hadoop,hive,DatanodeID,updateRegInfo)