2016-10-24 4 views

答えて

1

使用しているHBaseのバージョンについては言及していませんが、Hannibalを使用することができます。麒麟にこのコードサンプルが見つかり

+0

クールなアプリのように見えるが、非常に古いバージョンのHBaseだけをサポートしているようです – richardstartin

1

- あなたはRegionLoadインスタンスからストアファイルの数を取得することができ、すなわちint型StoreFilesと= regionLoad.getStorefiles()

/** Constructor for unit testing */ 
HBaseRegionSizeCalculator(HTable table, HBaseAdmin hBaseAdmin) throws IOException { 

try { 
    if (!enabled(table.getConfiguration())) { 
     logger.info("Region size calculation disabled."); 
     return; 
    } 

    logger.info("Calculating region sizes for table \"" + new String(table.getTableName()) + "\"."); 

    // Get regions for table. 
    Set<HRegionInfo> tableRegionInfos = table.getRegionLocations().keySet(); 
    Set<byte[]> tableRegions = new TreeSet<byte[]>(Bytes.BYTES_COMPARATOR); 

    for (HRegionInfo regionInfo : tableRegionInfos) { 
     tableRegions.add(regionInfo.getRegionName()); 
    } 

    ClusterStatus clusterStatus = hBaseAdmin.getClusterStatus(); 
    Collection<ServerName> servers = clusterStatus.getServers(); 
    final long megaByte = 1024L * 1024L; 

    // Iterate all cluster regions, filter regions from our table and 
    // compute their size. 
    for (ServerName serverName : servers) { 
     ServerLoad serverLoad = clusterStatus.getLoad(serverName); 

     for (RegionLoad regionLoad : serverLoad.getRegionsLoad().values()) { 
      byte[] regionId = regionLoad.getName(); 

      if (tableRegions.contains(regionId)) { 

       long regionSizeBytes = regionLoad.getStorefileSizeMB() * megaByte; 
       sizeMap.put(regionId, regionSizeBytes); 

       // logger.info("Region " + regionLoad.getNameAsString() 
       // + " has size " + regionSizeBytes); 
      } 
     } 
    } 
} finally { 
    hBaseAdmin.close(); 
} 

}

関連する問題