我正在尝试为hbase编写一个均衡器工具,它可以通过区域计数和/或区域大小(存储文件大小的总和)在区域服务器之间为表平衡区域。我找不到任何返回区域大小或相关信息的hbase api类。我已经检查了一些可用于获取其他表/区域信息的类,例如org.apache.hadoop.hbase.client.htable和hbaseadmin。
我在想,实现这一点的另一种方法是使用一个hadoop类,它返回文件系统中目录的大小,例如org.apache.hadoop.fs.filesystem列出特定hdfs路径下的文件。
有什么建议吗?
2条答案
按热度按时间kxeu7u2r1#
我使用它来管理区域的拆分,但是,您可以自己利用它来实现负载平衡。我还自己进行了负载平衡,将区域(给定表的)均匀地分布在节点上,这样mr jobs就可以均匀地分布。
也许下面的代码片段有用?
oknwwptz2#
默认的负载平衡器有什么问题?
从wiki:
均衡器是在主服务器上运行的一种周期性操作,用于在集群上重新分配区域。它是通过
hbase.balancer.period
默认值为300000(5分钟)。如果你真的想自己动手,你确实可以使用hadoopapi,更具体地说,是
FileStatus
班级。这个类充当一个接口来表示文件的客户端信息。