本文主要是介绍HBase 创建不分裂的表 ( 禁止 Table Split ),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
有时候,出于特殊需要,我们希望对 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
这篇关于HBase 创建不分裂的表 ( 禁止 Table Split )的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!