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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!