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


Java ClientProtocol.getDatanodeReport方法代码示例

本文整理汇总了Java中org.apache.hadoop.hdfs.protocol.ClientProtocol.getDatanodeReport方法的典型用法代码示例。如果您正苦于以下问题:Java ClientProtocol.getDatanodeReport方法的具体用法?Java ClientProtocol.getDatanodeReport怎么用?Java ClientProtocol.getDatanodeReport使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.hadoop.hdfs.protocol.ClientProtocol的用法示例。


在下文中一共展示了ClientProtocol.getDatanodeReport方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: waitForBalancer

import org.apache.hadoop.hdfs.protocol.ClientProtocol; //导入方法依赖的package包/类
/**
 * Wait until balanced: each datanode gives utilization within 
 * BALANCE_ALLOWED_VARIANCE of average
 * @throws IOException
 * @throws TimeoutException
 */
static void waitForBalancer(long totalUsedSpace, long totalCapacity,
    ClientProtocol client, MiniDFSCluster cluster, BalancerParameters p,
    int expectedExcludedNodes) throws IOException, TimeoutException {
  long timeout = TIMEOUT;
  long failtime = (timeout <= 0L) ? Long.MAX_VALUE
      : Time.monotonicNow() + timeout;
  if (!p.getIncludedNodes().isEmpty()) {
    totalCapacity = p.getIncludedNodes().size() * CAPACITY;
  }
  if (!p.getExcludedNodes().isEmpty()) {
    totalCapacity -= p.getExcludedNodes().size() * CAPACITY;
  }
  final double avgUtilization = ((double)totalUsedSpace) / totalCapacity;
  boolean balanced;
  do {
    DatanodeInfo[] datanodeReport = 
        client.getDatanodeReport(DatanodeReportType.ALL);
    assertEquals(datanodeReport.length, cluster.getDataNodes().size());
    balanced = true;
    int actualExcludedNodeCount = 0;
    for (DatanodeInfo datanode : datanodeReport) {
      double nodeUtilization = ((double)datanode.getDfsUsed())
          / datanode.getCapacity();
      if (Dispatcher.Util.isExcluded(p.getExcludedNodes(), datanode)) {
        assertTrue(nodeUtilization == 0);
        actualExcludedNodeCount++;
        continue;
      }
      if (!Dispatcher.Util.isIncluded(p.getIncludedNodes(), datanode)) {
        assertTrue(nodeUtilization == 0);
        actualExcludedNodeCount++;
        continue;
      }
      if (Math.abs(avgUtilization - nodeUtilization) > BALANCE_ALLOWED_VARIANCE) {
        balanced = false;
        if (Time.monotonicNow() > failtime) {
          throw new TimeoutException(
              "Rebalancing expected avg utilization to become "
              + avgUtilization + ", but on datanode " + datanode
              + " it remains at " + nodeUtilization
              + " after more than " + TIMEOUT + " msec.");
        }
        try {
          Thread.sleep(100);
        } catch (InterruptedException ignored) {
        }
        break;
      }
    }
    assertEquals(expectedExcludedNodes,actualExcludedNodeCount);
  } while (!balanced);
}
 
开发者ID:aliyun-beta,项目名称:aliyun-oss-hadoop-fs,代码行数:59,代码来源:TestBalancer.java


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