gpt4 book ai didi

hadoop - 通过 API 获取 Hbase 区域大小

转载 作者:可可西里 更新时间:2023-11-01 14:43:20 28 4
gpt4 key购买 nike

我正在尝试为 Hbase 编写一个平衡器工具,它可以根据区域计数和/或区域大小(存储文件大小的总和)来平衡跨区域服务器的区域。我找不到任何返回区域大小或相关信息的 Hbase API 类。我已经检查了一些可用于获取其他表/区域信息的类,例如org.apache.hadoop.hbase.client.HTable 和 HBaseAdmin。

我在想,另一种实现方法是使用 Hadoop 类之一,它返回文件系统中目录的大小,例如org.apache.hadoop.fs.FileSystem 列出特定 HDFS 路径下的文件。

有什么建议吗?

最佳答案

我用它来进行区域的托管拆分,但是,您可以利用它自己进行负载平衡。我还对自己进行负载平衡,以在我们的节点上均匀分布(给定表的)区域,以便 MR 作业均匀分布。

也许下面的代码片段有用?

final HBaseAdmin admin = new HBaseAdmin(conf);
final ClusterStatus clusterStatus = admin.getClusterStatus();

for (ServerName serverName : clusterStatus.getServers()) {
final HServerLoad serverLoad = clusterStatus.getLoad(serverName);

for (Map.Entry<byte[], HServerLoad.RegionLoad> entry : serverLoad.getRegionsLoad().entrySet()) {
final String region = Bytes.toString(entry.getKey());
final HServerLoad.RegionLoad regionLoad = entry.getValue();
long storeFileSize = regionLoad.getStorefileSizeMB();
// other useful thing in regionLoad if you like
}
}

关于hadoop - 通过 API 获取 Hbase 区域大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14573466/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com