当前位置: 首页>>代码示例>>Java>>正文


Java CachedBlocksList类代码示例

本文整理汇总了Java中org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor.CachedBlocksList的典型用法代码示例。如果您正苦于以下问题:Java CachedBlocksList类的具体用法?Java CachedBlocksList怎么用?Java CachedBlocksList使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


CachedBlocksList类属于org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor包,在下文中一共展示了CachedBlocksList类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: getCacheCommand

import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor.CachedBlocksList; //导入依赖的package包/类
/**
 * Convert a CachedBlockList into a DatanodeCommand with a list of blocks.
 *
 * @param list       The {@link CachedBlocksList}.  This function 
 *                   clears the list.
 * @param datanode   The datanode.
 * @param action     The action to perform in the command.
 * @param poolId     The block pool id.
 * @return           A DatanodeCommand to be sent back to the DN, or null if
 *                   there is nothing to be done.
 */
private DatanodeCommand getCacheCommand(CachedBlocksList list,
    DatanodeDescriptor datanode, int action, String poolId) {
  int length = list.size();
  if (length == 0) {
    return null;
  }
  // Read the existing cache commands.
  long[] blockIds = new long[length];
  int i = 0;
  for (Iterator<CachedBlock> iter = list.iterator();
          iter.hasNext(); ) {
    CachedBlock cachedBlock = iter.next();
    blockIds[i++] = cachedBlock.getBlockId();
  }
  return new BlockIdCommand(action, poolId, blockIds);
}
 
开发者ID:naver,项目名称:hadoop,代码行数:28,代码来源:DatanodeManager.java

示例2: processCacheReportImpl

import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor.CachedBlocksList; //导入依赖的package包/类
private void processCacheReportImpl(final DatanodeDescriptor datanode,
    final List<Long> blockIds) {
  CachedBlocksList cached = datanode.getCached();
  cached.clear();
  CachedBlocksList cachedList = datanode.getCached();
  CachedBlocksList pendingCachedList = datanode.getPendingCached();
  for (Iterator<Long> iter = blockIds.iterator(); iter.hasNext(); ) {
    long blockId = iter.next();
    LOG.trace("Cache report from datanode {} has block {}", datanode,
        blockId);
    CachedBlock cachedBlock =
        new CachedBlock(blockId, (short)0, false);
    CachedBlock prevCachedBlock = cachedBlocks.get(cachedBlock);
    // Add the block ID from the cache report to the cachedBlocks map
    // if it's not already there.
    if (prevCachedBlock != null) {
      cachedBlock = prevCachedBlock;
    } else {
      cachedBlocks.put(cachedBlock);
      LOG.trace("Added block {}  to cachedBlocks", cachedBlock);
    }
    // Add the block to the datanode's implicit cached block list
    // if it's not already there.  Similarly, remove it from the pending
    // cached block list if it exists there.
    if (!cachedBlock.isPresent(cachedList)) {
      cachedList.add(cachedBlock);
      LOG.trace("Added block {} to CACHED list.", cachedBlock);
    }
    if (cachedBlock.isPresent(pendingCachedList)) {
      pendingCachedList.remove(cachedBlock);
      LOG.trace("Removed block {} from PENDING_CACHED list.", cachedBlock);
    }
  }
}
 
开发者ID:naver,项目名称:hadoop,代码行数:35,代码来源:CacheManager.java

示例3: isPresent

import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor.CachedBlocksList; //导入依赖的package包/类
/**
 * Return true if this CachedBlock is present on the given list.
 */
public boolean isPresent(CachedBlocksList cachedBlocksList) {
  for (int i = 0; i < triplets.length; i += 3) {
    CachedBlocksList list = (CachedBlocksList)triplets[i];
    if (list == cachedBlocksList) {
      return true;
    }
  }
  return false;
}
 
开发者ID:naver,项目名称:hadoop,代码行数:13,代码来源:CachedBlock.java

示例4: testAddElementsToList

import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor.CachedBlocksList; //导入依赖的package包/类
private void testAddElementsToList(CachedBlocksList list,
    CachedBlock[] blocks) {
  Assert.assertTrue("expected list to start off empty.", 
      !list.iterator().hasNext());
  for (CachedBlock block : blocks) {
    Assert.assertTrue(list.add(block));
  }
}
 
开发者ID:naver,项目名称:hadoop,代码行数:9,代码来源:TestCachedBlocksList.java

示例5: testRemoveElementsFromList

import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor.CachedBlocksList; //导入依赖的package包/类
private void testRemoveElementsFromList(Random r,
    CachedBlocksList list, CachedBlock[] blocks) {
  int i = 0;
  for (Iterator<CachedBlock> iter = list.iterator(); iter.hasNext(); ) {
    Assert.assertEquals(blocks[i], iter.next());
    i++;
  }
  if (r.nextBoolean()) {
    LOG.info("Removing via iterator");
    for (Iterator<CachedBlock> iter = list.iterator(); iter.hasNext() ;) {
      iter.next();
      iter.remove();
    }
  } else {
    LOG.info("Removing in pseudo-random order");
    CachedBlock[] remainingBlocks = Arrays.copyOf(blocks, blocks.length);
    for (int removed = 0; removed < remainingBlocks.length; ) {
      int toRemove = r.nextInt(remainingBlocks.length);
      if (remainingBlocks[toRemove] != null) {
        Assert.assertTrue(list.remove(remainingBlocks[toRemove]));
        remainingBlocks[toRemove] = null;
        removed++;
      }
    }
  }
  Assert.assertTrue("expected list to be empty after everything " +
      "was removed.", !list.iterator().hasNext());
}
 
开发者ID:naver,项目名称:hadoop,代码行数:29,代码来源:TestCachedBlocksList.java

示例6: getCacheCommand

import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor.CachedBlocksList; //导入依赖的package包/类
/**
 * Convert a CachedBlockList into a DatanodeCommand with a list of blocks.
 *
 * @param list       The {@link CachedBlocksList}.  This function 
 *                   clears the list.
 * @param action     The action to perform in the command.
 * @param poolId     The block pool id.
 * @return           A DatanodeCommand to be sent back to the DN, or null if
 *                   there is nothing to be done.
 */
private DatanodeCommand getCacheCommand(CachedBlocksList list, int action,
    String poolId) {
  int length = list.size();
  if (length == 0) {
    return null;
  }
  // Read the existing cache commands.
  long[] blockIds = new long[length];
  int i = 0;
  for (CachedBlock cachedBlock : list) {
    blockIds[i++] = cachedBlock.getBlockId();
  }
  return new BlockIdCommand(action, poolId, blockIds);
}
 
开发者ID:aliyun-beta,项目名称:aliyun-oss-hadoop-fs,代码行数:25,代码来源:DatanodeManager.java

示例7: processCacheReportImpl

import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor.CachedBlocksList; //导入依赖的package包/类
private void processCacheReportImpl(final DatanodeDescriptor datanode,
    final List<Long> blockIds) {
  CachedBlocksList cached = datanode.getCached();
  cached.clear();
  CachedBlocksList cachedList = datanode.getCached();
  CachedBlocksList pendingCachedList = datanode.getPendingCached();
  for (Iterator<Long> iter = blockIds.iterator(); iter.hasNext(); ) {
    long blockId = iter.next();
    CachedBlock cachedBlock =
        new CachedBlock(blockId, (short)0, false);
    CachedBlock prevCachedBlock = cachedBlocks.get(cachedBlock);
    // Add the block ID from the cache report to the cachedBlocks map
    // if it's not already there.
    if (prevCachedBlock != null) {
      cachedBlock = prevCachedBlock;
    } else {
      cachedBlocks.put(cachedBlock);
    }
    // Add the block to the datanode's implicit cached block list
    // if it's not already there.  Similarly, remove it from the pending
    // cached block list if it exists there.
    if (!cachedBlock.isPresent(cachedList)) {
      cachedList.add(cachedBlock);
    }
    if (cachedBlock.isPresent(pendingCachedList)) {
      pendingCachedList.remove(cachedBlock);
    }
  }
}
 
开发者ID:Seagate,项目名称:hadoop-on-lustre2,代码行数:30,代码来源:CacheManager.java

示例8: getDatanodes

import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor.CachedBlocksList; //导入依赖的package包/类
/**
 * Get a list of the datanodes which this block is cached,
 * planned to be cached, or planned to be uncached on.
 *
 * @param type      If null, this parameter is ignored.
 *                  If it is non-null, we match only datanodes which
 *                  have it on this list.
 *                  See {@link DatanodeDescriptor.CachedBlocksList.Type}
 *                  for a description of all the lists.
 *                  
 * @return          The list of datanodes.  Modifying this list does not
 *                  alter the state of the CachedBlock.
 */
public List<DatanodeDescriptor> getDatanodes(Type type) {
  List<DatanodeDescriptor> nodes = new LinkedList<DatanodeDescriptor>();
  for (int i = 0; i < triplets.length; i += 3) {
    CachedBlocksList list = (CachedBlocksList)triplets[i];
    if ((type == null) || (list.getType() == type)) {
      nodes.add(list.getDatanode());
    }
  }
  return nodes;
}
 
开发者ID:naver,项目名称:hadoop,代码行数:24,代码来源:CachedBlock.java

示例9: getDatanodes

import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor.CachedBlocksList; //导入依赖的package包/类
/**
 * Get a list of the datanodes which this block is cached,
 * planned to be cached, or planned to be uncached on.
 *
 * @param type      If null, this parameter is ignored.
 *                  If it is non-null, we match only datanodes which
 *                  have it on this list.
 *                  See {@link DatanodeDescriptor#CachedBlocksList#Type}
 *                  for a description of all the lists.
 *                  
 * @return          The list of datanodes.  Modifying this list does not
 *                  alter the state of the CachedBlock.
 */
public List<DatanodeDescriptor> getDatanodes(Type type) {
  List<DatanodeDescriptor> nodes = new LinkedList<DatanodeDescriptor>();
  for (int i = 0; i < triplets.length; i += 3) {
    CachedBlocksList list = (CachedBlocksList)triplets[i];
    if ((type == null) || (list.getType() == type)) {
      nodes.add(list.getDatanode());
    }
  }
  return nodes;
}
 
开发者ID:Seagate,项目名称:hadoop-on-lustre2,代码行数:24,代码来源:CachedBlock.java


注:本文中的org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor.CachedBlocksList类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。