Example usage for org.apache.hadoop.hdfs.server.datanode DataNodeTestUtils getFSDataset

List of usage examples for org.apache.hadoop.hdfs.server.datanode DataNodeTestUtils getFSDataset

Introduction

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

Prototype

public static FsDatasetSpi<?> getFSDataset(DataNode dn) 

Source Link

Document

This method is used for testing.

Usage

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

License:Apache License

private synchronized boolean shouldWait(DatanodeInfo[] dnInfo, InetSocketAddress addr) {
    // If a datanode failed to start, then do not wait
    for (DataNodeProperties dn : dataNodes) {
        // the datanode thread communicating with the namenode should be alive
        if (!dn.datanode.isConnectedToNN(addr)) {
            LOG.warn("BPOfferService in datanode " + dn.datanode + " failed to connect to namenode at " + addr);
            return false;
        }/*from  w  w  w  .  j  ava 2  s.  c o m*/
    }

    // Wait for expected number of datanodes to start
    if (dnInfo.length != numDataNodes) {
        LOG.info("dnInfo.length != numDataNodes");
        return true;
    }

    // if one of the data nodes is not fully started, continue to wait
    for (DataNodeProperties dn : dataNodes) {
        if (!dn.datanode.isDatanodeFullyStarted()) {
            LOG.info("!dn.datanode.isDatanodeFullyStarted()");
            return true;
        }
    }

    // make sure all datanodes have sent first heartbeat to namenode,
    // using (capacity == 0) as proxy.
    for (DatanodeInfo dn : dnInfo) {
        if (dn.getCapacity() == 0) {
            LOG.info("dn.getCapacity() == 0");
            return true;
        }
    }

    // If datanode dataset is not initialized then wait
    for (DataNodeProperties dn : dataNodes) {
        if (DataNodeTestUtils.getFSDataset(dn.datanode) == null) {
            LOG.info("DataNodeTestUtils.getFSDataset(dn.datanode) == null");
            return true;
        }
    }
    return false;
}

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

License:Apache License

/**
 * //from  w ww .  j  ava  2s.  com
 * @param dataNodeIndex
 *            - data node whose block report is desired - the index is same as for getDataNodes()
 * @return the block report for the specified data node
 */
public Map<DatanodeStorage, BlockListAsLongs> getBlockReport(String bpid, int dataNodeIndex) {
    if (dataNodeIndex < 0 || dataNodeIndex > dataNodes.size()) {
        throw new IndexOutOfBoundsException();
    }
    final DataNode dn = dataNodes.get(dataNodeIndex).datanode;
    return DataNodeTestUtils.getFSDataset(dn).getBlockReports(bpid);
}

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

License:Apache License

/**
 * This method is valid only if the data nodes have simulated data
 * /*from ww w  .  ja v  a  2  s.  c om*/
 * @param dataNodeIndex
 *            - data node i which to inject - the index is same as for getDataNodes()
 * @param blocksToInject
 *            - the blocks
 * @param bpid
 *            - (optional) the block pool id to use for injecting blocks.
 *            If not supplied then it is queried from the in-process NameNode.
 * @throws IOException
 *             if not simulatedFSDataset
 *             if any of blocks already exist in the data node
 * 
 */
public void injectBlocks(int dataNodeIndex, Iterable<Block> blocksToInject, String bpid) throws IOException {
    if (dataNodeIndex < 0 || dataNodeIndex > dataNodes.size()) {
        throw new IndexOutOfBoundsException();
    }
    final DataNode dn = dataNodes.get(dataNodeIndex).datanode;
    final FsDatasetSpi<?> dataSet = DataNodeTestUtils.getFSDataset(dn);
    if (!(dataSet instanceof SimulatedFSDataset)) {
        throw new IOException("injectBlocks is valid only for SimilatedFSDataset");
    }
    if (bpid == null) {
        bpid = getNamesystem().getBlockPoolId();
    }
    SimulatedFSDataset sdataset = (SimulatedFSDataset) dataSet;
    sdataset.injectBlocks(bpid, blocksToInject);
    dataNodes.get(dataNodeIndex).datanode.scheduleAllBlockReport(0);
}

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

License:Apache License

/**
 * Multiple-NameNode version of {@link #injectBlocks(Iterable[])}.
 *///w  w w . j  ava 2  s  .c  om
public void injectBlocks(int nameNodeIndex, int dataNodeIndex, Iterable<Block> blocksToInject)
        throws IOException {
    if (dataNodeIndex < 0 || dataNodeIndex > dataNodes.size()) {
        throw new IndexOutOfBoundsException();
    }
    final DataNode dn = dataNodes.get(dataNodeIndex).datanode;
    final FsDatasetSpi<?> dataSet = DataNodeTestUtils.getFSDataset(dn);
    if (!(dataSet instanceof SimulatedFSDataset)) {
        throw new IOException("injectBlocks is valid only for SimilatedFSDataset");
    }
    String bpid = getNamesystem(nameNodeIndex).getBlockPoolId();
    SimulatedFSDataset sdataset = (SimulatedFSDataset) dataSet;
    sdataset.injectBlocks(bpid, blocksToInject);
    dataNodes.get(dataNodeIndex).datanode.scheduleAllBlockReport(0);
}