Hbase 区域在不应该分裂时分裂

Posted

技术标签:

【中文标题】Hbase 区域在不应该分裂时分裂【英文标题】:Hbase regions splitting when they shouldn't be 【发布时间】:2015-07-14 22:27:20 【问题描述】:

我们有一些表配置了 DelimitedKeyPrefixRegionSplitPolicy(继承自 ImprovementToUpperBoundRegionSplitPolicy),memstore 刷新大小为 128M,表 MAX_FILESIZE 为 ~20GB。

根据我们的计算,在区域大小达到 20GB (4^3*256M = 16GB) 之前,每台服务器的区域不应超过 5 个,但每个区域服务器有 7-15 个区域。

我们之前将它们组合在一起以获得正确的数字,但随后它们又分开了。我们使用的是 hbase 0.98.4,表描述显示 TABLE_ATTRIBUTES => MAX_FILESIZE => '21474836480'... 默认区域最大文件大小为 1 GB,许多区域都大于此大小。

尽管我们尽最大努力减少区域数量,但我们无法弄清楚他们为什么继续分裂。有什么想法吗?

【问题讨论】:

我们尝试将 max_filesize 更改为 100GB,如此处所示hbase.apache.org/apidocs/org/apache/hadoop/hbase/util/…,但我们仍在拆分 【参考方案1】:

您应该更改拆分策略

METADATA => 'SPLIT_POLICY' => 'org.apache.hadoop.hbase.regionserver.ConstantSizeRegionSplitPolicy'

【讨论】:

如果我们这样做了,我们将不得不将最大大小设置得非常高并手动管理拆分,因为我们需要它们在前缀边界上拆分。我们可以退回到那个,但是我们现在所做的应该根据文档工作,我不明白为什么它不工作。

以上是关于Hbase 区域在不应该分裂时分裂的主要内容,如果未能解决你的问题,请参考以下文章

为啥新添加的 HBase 区域服务器无法获取分配的区域?

按表重新平衡 hbase 区域

hbase 架构

在不使用代码的情况下更改 Windows 区域设置/文化

HBase 预分割和最大区域大小

如果具有 hbase 表区域的节点出现故障会发生啥