我正在使用HBase的默认配置。每个区域服务器都有很多区域。
我发现我可以配置区域的最大大小 - 例如,不是256MB,而是4GB。所以我添加了以下配置并重新启动了集群:
<property>
<name>hbase.hregion.max.filesize</name>
<value>4294967296</value>
</property>
然后我执行了major_compaction - 但没有发生任何事情。
如何强制HBase合并hfiles以尊重现有数据的此配置?
答案 0 :(得分:2)
压缩合并StoreFiles,它不合并区域。
您可以使用以下方式手动合并现有区域:
$ bin/hbase org.apache.hbase.util.Merge <tablename> <region1> <region2>
有一些工具和补丁可以使隐式区域合并成为可能。
答案 1 :(得分:0)
这里的一些事情,我认为你应该重新启动至少Hmaster来获取更改后的值。 我也设置了字节值,在你的情况下它应该是4294967296(4GB)。 我认为在这些更改之后,Hbase应该手动拆分大于指定max.filesize的区域。或者你也可以做一个手动major_compact甚至拆分。