Package org.apache.hadoop.hdfs.protocol

Examples of org.apache.hadoop.hdfs.protocol.LocatedBlock


      }
      // create chains
      int chain = 0;
      OutputStream fos = null;
      for (LocatedBlock lBlk : blocks.getLocatedBlocks()) {
        LocatedBlock lblock = lBlk;
        DatanodeInfo[] locs = lblock.getLocations();
        if (locs == null || locs.length == 0) {
          if (fos != null) {
            fos.flush();
            fos.close();
            fos = null;
          }
          continue;
        }
        if (fos == null) {
          fos = dfs.create(target + "/" + chain, true);
          if (fos != null) chain++;
          else {
            LOG.warn(errmsg + ": could not store chain " + chain);
            // perhaps we should bail out here...
            // return;
            continue;
          }
        }
       
        // copy the block. It's a pity it's not abstracted from DFSInputStream ...
        try {
          copyBlock(dfs, lblock, fos);
        } catch (Exception e) {
          e.printStackTrace();
          // something went wrong copying this block...
          LOG.warn(" - could not copy block " + lblock.getBlock() + " to " + target);
          fos.flush();
          fos.close();
          fos = null;
        }
      }
View Full Code Here


        long id2 = 0x0123456789abcdefL;
        long id3 = 0xfedcba0987654321L;
        long id4 = 0xfedcba9876543210L;
        long id5 = 0x0L;

        blocks.add(new LocatedBlock(new Block(id1), null));
        blocks.add(new LocatedBlock(new Block(id2), null));
        blocks.add(new LocatedBlock(new Block(id3), null));
        blocks.add(new LocatedBlock(new Block(id4), null));
        blocks.add(new LocatedBlock(new Block(id5), null));
        expectedResult.put("hdfs_B12", "*34567890abcdef*");
        expectedResult.put("hdfs_B01", "*23456789abcdef*");
        expectedResult.put("hdfs_Bfe", "*dcba0987654321*dcba9876543210*");
        expectedResult.put("hdfs_B00", "*00000000000000*");

        result = (Map)callPrivateMethod(instance, "buildBlockRequests", new Class[] {Collection.class}, new Object[] {blocks});
        assertEquals("The buildBlockRequests() method did not build the expected requests: ", expectedResult, result);

        blocks.clear();
        blocks.add(new LocatedBlock(new Block(id3), null));
        blocks.add(new LocatedBlock(new Block(id4), null));
        expectedResult.clear();
        expectedResult.put("hdfs_Bfe", "*dcba0987654321*dcba9876543210*");

        result = (Map)callPrivateMethod(instance, "buildBlockRequests", new Class[] {Collection.class}, new Object[] {blocks});
        assertEquals("The buildBlockRequests() method did not build the expected requests: ", expectedResult, result);

        blocks.clear();
        blocks.add(new LocatedBlock(new Block(id3), null));
        expectedResult.clear();
        expectedResult.put("hdfs_Bfe", "*dcba0987654321*");

        result = (Map)callPrivateMethod(instance, "buildBlockRequests", new Class[] {Collection.class}, new Object[] {blocks});
        assertEquals("The buildBlockRequests() method did not build the expected requests: ", expectedResult, result);

        blocks.clear();
        blocks.add(new LocatedBlock(null, null));
        expectedResult.clear();

        result = (Map)callPrivateMethod(instance, "buildBlockRequests", new Class[] {Collection.class}, new Object[] {blocks});
        assertEquals("The buildBlockRequests() method did not build the expected requests: ", expectedResult, result);

View Full Code Here

        node2.setNetworkLocation("/rack2a");
        node3.setNetworkLocation("/rack2b");
        node4.setNetworkLocation("/rack4");
        node5.setNetworkLocation("/rack5");

        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node1, node2, node5}));
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node1, node2, node3}));
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node2, node3, node4}));
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node1, node4, node5}));
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node1, node3, node5}));
        expectedResult.put("hdfs_R", "/rack1");
        expectedResult.put("hdfs_r", "/rack1|/rack2a|/rack2b|/rack5|/rack4");

        result = (Map)callPrivateMethod(instance, "buildRackRequests", new Class[] {Collection.class}, new Object[] {blocks});
        assertEquals("The buildRackRequests() method did not build the expected requests: ", expectedResult, result);

        blocks.clear();
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node1, node2, node5}));
        expectedResult.put("hdfs_R", "/rack1");
        expectedResult.put("hdfs_r", "/rack1|/rack2a|/rack5");

        result = (Map)callPrivateMethod(instance, "buildRackRequests", new Class[] {Collection.class}, new Object[] {blocks});
        assertEquals("The buildRackRequests() method did not build the expected requests: ", expectedResult, result);

        blocks.clear();
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node1}));
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node3}));
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node5}));
        expectedResult.put("hdfs_R", "/rack1");
        expectedResult.put("hdfs_r", "/rack1|/rack2b|/rack5");

        result = (Map)callPrivateMethod(instance, "buildRackRequests", new Class[] {Collection.class}, new Object[] {blocks});
        assertEquals("The buildRackRequests() method did not build the expected requests: ", expectedResult, result);

        blocks.clear();
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node1}));
        expectedResult.put("hdfs_R", "/rack1");
        expectedResult.put("hdfs_r", "/rack1");

        result = (Map)callPrivateMethod(instance, "buildRackRequests", new Class[] {Collection.class}, new Object[] {blocks});
        assertEquals("The buildRackRequests() method did not build the expected requests: ", expectedResult, result);

        blocks.clear();
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {}));
        expectedResult.clear();

        result = (Map)callPrivateMethod(instance, "buildRackRequests", new Class[] {Collection.class}, new Object[] {blocks});
        assertEquals("The buildRackRequests() method did not build the expected requests: ", expectedResult, result);

        blocks.clear();
        blocks.add(new LocatedBlock(null, null));
        expectedResult.clear();

        result = (Map)callPrivateMethod(instance, "buildRackRequests", new Class[] {Collection.class}, new Object[] {blocks});
        assertEquals("The buildRackRequests() method did not build the expected requests: ", expectedResult, result);
View Full Code Here

        node2.setNetworkLocation("/rack2");
        node3.setNetworkLocation("/rack3");
        node4.setNetworkLocation("/rack4");
        node5.setNetworkLocation("/rack5");

        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node1, node2, node5}));
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node1, node2, node3}));
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node2, node3, node4}));
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node1, node4, node5}));
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node1, node3, node5}));
        expectedResult.put("/rack1", 4);
        expectedResult.put("/rack2", 3);
        expectedResult.put("/rack3", 3);
        expectedResult.put("/rack4", 2);
        expectedResult.put("/rack5", 3);

        result = (Map)callPrivateMethod(instance, "collateRacks", new Class[] {Collection.class}, new Object[] {blocks});
        assertEquals("The collateRacks() method did not count the racks correctly", expectedResult, result);

        blocks.clear();
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node1, node3, node5}));
        expectedResult.clear();
        expectedResult.put("/rack1", 1);
        expectedResult.put("/rack3", 1);
        expectedResult.put("/rack5", 1);

        result = (Map)callPrivateMethod(instance, "collateRacks", new Class[] {Collection.class}, new Object[] {blocks});
        assertEquals("The collateRacks() method did not count the racks correctly", expectedResult, result);

        blocks.clear();
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node1}));
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node3}));
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node5}));
        expectedResult.clear();
        expectedResult.put("/rack1", 1);
        expectedResult.put("/rack3", 1);
        expectedResult.put("/rack5", 1);

        result = (Map)callPrivateMethod(instance, "collateRacks", new Class[] {Collection.class}, new Object[] {blocks});
        assertEquals("The collateRacks() method did not count the racks correctly", expectedResult, result);

        blocks.clear();
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {node1}));
        expectedResult.clear();
        expectedResult.put("/rack1", 1);

        result = (Map)callPrivateMethod(instance, "collateRacks", new Class[] {Collection.class}, new Object[] {blocks});
        assertEquals("The collateRacks() method did not count the racks correctly", expectedResult, result);

        blocks.clear();
        blocks.add(new LocatedBlock(null, new DatanodeInfo[] {}));
        expectedResult.clear();

        result = (Map)callPrivateMethod(instance, "collateRacks", new Class[] {Collection.class}, new Object[] {blocks});
        assertEquals("The collateRacks() method did not count the racks correctly", expectedResult, result);

        blocks.clear();
        blocks.add(new LocatedBlock(null, null));
        expectedResult.clear();

        result = (Map)callPrivateMethod(instance, "collateRacks", new Class[] {Collection.class}, new Object[] {blocks});
        assertEquals("The collateRacks() method did not count the racks correctly", expectedResult, result);
View Full Code Here

   
    LOG.info("Reporting bad block " + block + " to namenode.");
   
    try {
      DatanodeInfo[] dnArr = { new DatanodeInfo(datanode.dnRegistration) };
      LocatedBlock[] blocks = { new LocatedBlock(block, dnArr) };
      datanode.namenode.reportBadBlocks(blocks);
    } catch (IOException e){
      /* One common reason is that NameNode could be in safe mode.
       * Should we keep on retrying in that case?
       */
 
View Full Code Here

          // This is case 3: a call to append() on an already-closed file.
          if (FSNamesystem.LOG.isDebugEnabled()) {
            FSNamesystem.LOG.debug("Reopening an already-closed file " +
                "for append");
          }
          LocatedBlock lb = fsNamesys.prepareFileForWrite(path,
              oldFile, addCloseOp.clientName, addCloseOp.clientMachine, false, iip.getLatestSnapshotId(), false);
          newFile = INodeFile.valueOf(fsDir.getINode(path),
              path, true);
         
          // add the op into retry cache is necessary
View Full Code Here

    String clientMachine = getClientMachine();
    if (stateChangeLog.isDebugEnabled()) {
      stateChangeLog.debug("*DIR* NameNode.append: file "
          +src+" for "+clientName+" at "+clientMachine);
    }
    LocatedBlock info = namesystem.appendFile(src, clientName, clientMachine);
    metrics.incrFilesAppended();
    return info;
  }
View Full Code Here

        excludedNodesSet.add(node);
      }
    }
    List<String> favoredNodesList = (favoredNodes == null) ? null
        : Arrays.asList(favoredNodes);
    LocatedBlock locatedBlock = namesystem.getAdditionalBlock(src, fileId,
        clientName, previous, excludedNodesSet, favoredNodesList);
    if (locatedBlock != null)
      metrics.incrAddBlockOps();
    return locatedBlock;
  }
View Full Code Here

    // get the block belonged to the created file
    LocatedBlocks blocks = NameNodeAdapter.getBlockLocations(
        cluster.getNameNode(), fileName.toString(), 0, (long)fileLen);
    assertEquals("Should only find 1 block", blocks.locatedBlockCount(), 1);
    LocatedBlock block = blocks.get(0);

    // bring up a second datanode
    cluster.startDataNodes(conf, 1, true, null, null);
    cluster.waitActive();
    final int sndNode = 1;
    DataNode datanode = cluster.getDataNodes().get(sndNode);
   
    // replicate the block to the second datanode
    InetSocketAddress target = datanode.getXferAddress();
    Socket s = new Socket(target.getAddress(), target.getPort());
    // write the header.
    DataOutputStream out = new DataOutputStream(s.getOutputStream());

    DataChecksum checksum = DataChecksum.newDataChecksum(
        DataChecksum.Type.CRC32, 512);
    new Sender(out).writeBlock(block.getBlock(),
        BlockTokenSecretManager.DUMMY_TOKEN, "",
        new DatanodeInfo[0], null,
        BlockConstructionStage.PIPELINE_SETUP_CREATE, 1, 0L, 0L, 0L,
        checksum, CachingStrategy.newDefaultStrategy());
    out.flush();
View Full Code Here

    // Create a file with partial block
    DFSTestUtil.createFile(filesystem, new Path(src), 128, (short)1, 0L);
   
    // Retried append requests succeed
    newCall();
    LocatedBlock b = namesystem.appendFile(src, "holder", "clientMachine");
    Assert.assertEquals(b, namesystem.appendFile(src, "holder", "clientMachine"));
    Assert.assertEquals(b, namesystem.appendFile(src, "holder", "clientMachine"));
   
    // non-retried call fails
    newCall();
View Full Code Here

TOP

Related Classes of org.apache.hadoop.hdfs.protocol.LocatedBlock

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.