HBase Region 拆分与合并
HBase Region 拆分与合并
Region 拆分
Region 自动拆分
HBase Region 的自动拆分有 6 种触发策略,如下:
-
ConstantSizeRegionSplitPolicy :按照固定大小来拆分 Region 策略
-
IncreasingToUpperBoundRegionSplitPolicy(默认):限制不断增长的文件尺寸的策略
-
SteppingSplitPolicy:
-
DisabledRegionSplitPolicy:永不自动拆分策略
-
KeyPrefixRegionSplitPolicy
-
DelimitedKeyPrefixRegionSplitPolicy
RegionSplitPolicy 自动拆分策略的使用
- 通过 hbase-site.xml 全局统一配置,如下:
<property>
<name>hbase.regionserver.region.split.policy</name>
<value>org.apache.hadoop.hbase.regionserver.IncreasingToUpperBoundRegionSplitPolicy</value>
</property>
-
通过 Java API 为单独的表指定 Region 拆分策略
HTableDescriptor tableDesc = new HTableDescriptor("test1"); //指定表 Region 自动拆分策略 tableDesc.setValue(HTableDescriptor.SPLIT_POLICY, IncreasingToUpperBoundRegionSplitPolicy.class.getName()); tableDesc.addFamily(new HColumnDescriptor(Bytes.toBytes("cf1"))); admin.createTable(tableDesc); ...
-
通过 HBase Shell 为单个表指定 Region 拆分策略
hbase(main):001:0> create 'test1', {METADATA => {'SPLIT_POLICY' => 'org.apache.hadoop.hbase.regionserver.IncreasingToUpperBoundRegionSplitPolicy'}},{NAME => 'cf1'}
手动拆分
Region 的预拆分(pre-splitting)
预拆分(pre-splitting)就是在建表的时候就定义好了拆分点的算法,所以叫预拆分。
手动指定拆分点:在建表的时候跟上 SPLITS 参数
hbase(main):029:0> create 'split01','cf1',SPLITS=>['1000000','2000000','3000000']
Region 强制拆分(forcedsplits)
除了预拆分和自动拆分以外,你还可以对运行了一段时间的 Region 进行强制地手动拆分(forcedsplits)。方法是调用 hbase shell 的 split方法。
[root@node-01 ~]# hbase shell $> split'test_table1,c,1476406588669.96dd8c68396fda69.','c_110'
这个就是把 test_table1,c,1476406588669.96dd8c68396fda69 这个 Region 从新的拆分点 c_110 处拆成 2 个Region。
推荐方案:
-
用预拆分导入初始数据
-
然后用自动拆分来让 HBase 来自动管理 Region
建议:不要关闭自动拆分
Region 合并
Region 可以被拆分,也可以被合并。不过 Region 的合并(merge)并不是为了性能考虑的,而更多地是出于维护的目的被创造出来的。
何时合并
比如删了大量的数据,每个Region都变小了,这个时候分成这么多个Region就有点浪费了,可以把Region合并起来,然后可以减少一些RegionServer服务器来节省成本。
如何合并
-
通过 Merge 类合并 Region
-
在线合并(online_merage)
RegionServer 运行多少个 Region 比较合理
RegionServer的堆内存大小0.4(hbase.regionserver.global.memstore.size)/128M(hbase.hregion.memstore.flush.size)列族的数量'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!