Search in sources :

Example 1 with SimulatedFSDataset

use of org.apache.hadoop.hdfs.server.datanode.SimulatedFSDataset in project hadoop by apache.

the class MiniDFSCluster method injectBlocks.

/**
   * Multiple-NameNode version of injectBlocks.
   */
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);
}
Also used : DataNode(org.apache.hadoop.hdfs.server.datanode.DataNode) SimulatedFSDataset(org.apache.hadoop.hdfs.server.datanode.SimulatedFSDataset) IOException(java.io.IOException)

Example 2 with SimulatedFSDataset

use of org.apache.hadoop.hdfs.server.datanode.SimulatedFSDataset in project hadoop by apache.

the class MiniDFSCluster method injectBlocks.

/**
   * This method is valid only if the data nodes have simulated data
   * @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);
}
Also used : DataNode(org.apache.hadoop.hdfs.server.datanode.DataNode) SimulatedFSDataset(org.apache.hadoop.hdfs.server.datanode.SimulatedFSDataset) IOException(java.io.IOException)

Aggregations

IOException (java.io.IOException)2 DataNode (org.apache.hadoop.hdfs.server.datanode.DataNode)2 SimulatedFSDataset (org.apache.hadoop.hdfs.server.datanode.SimulatedFSDataset)2