Example usage for org.apache.hadoop.hdfs.server.datanode DataNode refreshNamenodes

List of usage examples for org.apache.hadoop.hdfs.server.datanode DataNode refreshNamenodes

Introduction

In this page you can find the example usage for org.apache.hadoop.hdfs.server.datanode DataNode refreshNamenodes.

Prototype

public void refreshNamenodes(Configuration conf) throws IOException 

Source Link

Usage

From source file:com.mellanox.r4h.MiniDFSCluster.java

License:Apache License

/**
 * Add a namenode to a federated cluster and start it. Configuration of
 * datanodes in the cluster is refreshed to register with the new namenode.
 * //from w ww . jav a 2s.  c om
 * @return newly started namenode
 */
public NameNode addNameNode(Configuration conf, int namenodePort) throws IOException {
    if (!federation)
        throw new IOException("cannot add namenode to non-federated cluster");

    int nnIndex = nameNodes.length;
    int numNameNodes = nameNodes.length + 1;
    NameNodeInfo[] newlist = new NameNodeInfo[numNameNodes];
    System.arraycopy(nameNodes, 0, newlist, 0, nameNodes.length);
    nameNodes = newlist;
    String nameserviceId = NAMESERVICE_ID_PREFIX + (nnIndex + 1);

    String nameserviceIds = conf.get(DFS_NAMESERVICES);
    nameserviceIds += "," + nameserviceId;
    conf.set(DFS_NAMESERVICES, nameserviceIds);

    String nnId = null;
    initNameNodeAddress(conf, nameserviceId, new NNConf(nnId).setIpcPort(namenodePort));
    initNameNodeConf(conf, nameserviceId, nnId, true, true, nnIndex);
    createNameNode(nnIndex, conf, numDataNodes, true, null, null, nameserviceId, nnId);

    // Refresh datanodes with the newly started namenode
    for (DataNodeProperties dn : dataNodes) {
        DataNode datanode = dn.datanode;
        datanode.refreshNamenodes(conf);
    }

    // Wait for new namenode to get registrations from all the datanodes
    waitActive(nnIndex);
    return nameNodes[nnIndex].nameNode;
}