如何使hbase尊重现有区域数据的hregion.max.filesize

如何使hbase尊重现有区域数据的hregion.max.filesize,hbase,Hbase,我正在使用HBase的默认配置。每个区域服务器都有很多区域 我发现我可以配置区域的最大大小——不是256MB,而是4GB。因此,我添加了以下配置并重新启动了群集: <property> <name>hbase.hregion.max.filesize</name> <value>4294967296</value> </property> hbase.hregion.max.filesize 429496

我正在使用HBase的默认配置。每个区域服务器都有很多区域

我发现我可以配置区域的最大大小——不是256MB,而是4GB。因此,我添加了以下配置并重新启动了群集:

<property>
    <name>hbase.hregion.max.filesize</name>
    <value>4294967296</value>
</property>

hbase.hregion.max.filesize
4294967296
然后我执行了major_压缩-但什么也没发生


如何强制HBase合并hfiles以尊重现有数据的此配置?

这里有两件事,我认为您应该至少重新启动Hmaster以获取更改的值。 我还设置了字节值,在您的例子中,它应该是4294967296(4GB)。
我认为在这些更改之后,Hbase应该手动分割大于指定最大文件大小的区域。或者,您也可以手动进行主压缩,甚至拆分。

压缩会合并存储文件,但不会合并区域

可以使用以下方法手动合并现有区域:

$ bin/hbase org.apache.hbase.util.Merge <tablename> <region1> <region2>
$bin/hbase org.apache.hbase.util.Merge
有一些工具和补丁可以使隐式区域合并成为可能


看看这里:

我确实重新启动了所有集群,并以字节为单位配置了值,运行了一次主要的压缩。但不幸的是什么也没发生我认为应该合并但什么也没发生