Example usage for org.apache.hadoop.hdfs.server.datanode SimulatedFSDataset injectBlocks

List of usage examples for org.apache.hadoop.hdfs.server.datanode SimulatedFSDataset injectBlocks

Introduction

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

Prototype

public synchronized void injectBlocks(String bpid, Iterable<? extends Block> injectBlocks) throws IOException 

Source Link

Usage

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  . j av a2s  .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[])}.
 *//* www.  ja  v a  2  s .  c o m*/
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);
}