HBase 创建不分裂的表 ( 禁止 Table Split )

2023-12-26 13:47:35

有时候,出于特殊需要,我们希望对 HBase 表进行预分区后,禁止表再自动 Split。HBase 并不直接提供 Table Properties 来实现该功能,需要我们手动配置,主要操作是两项:

  • 将 HBase 的配置项 hbase.hregion.max.filesize 设为一个极大值,例如 Long 的 MAX_VALUE:9223372036854775807,该配置项用于限制单个 Region 的容量上限,超过该值 Region 就会自动 split,默认值是 10 GB
  • 建表时指切分策略改为:ConstantSizeRegionSplitPolicy,默认的切分策略是 IncreasingToUpperBoundRegionSplitPolicy,该策略在 Region 小于 10 GB 时有一套自己的切分规则,超过 10 GB 后才会遵循 ConstantSizeRegionSplitPolicy ,所以在一开始建表时需要显式配置

以下是一个示例,建表时进行了预分区,设置了 510 个 Region,并显式地配置切分策略为 ConstantSizeRegionSplitPolicy

TABLE_NAME="usertable"
REGIN_SPLITS=$((510-1))
cat << EOF | sudo -u hbase hbase shell
create '${TABLE_NAME}', 'cf', {METHOD => 'table_att', CONFIGURATION => {'SPLIT_POLICY' => 'org.apache.hadoop.hbase.regionserver.ConstantSizeRegionSplitPolicy'}}, {SPLITS => (1..${REGIN_SPLITS}).map {|i| "user#{1000+i*(9999-1000)/${REGIN_SPLITS}}"}}
describe '${TABLE_NAME}'
EOF

文章来源:https://blog.csdn.net/bluishglc/article/details/135217819
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。