概要说明
Region分裂是hyperbase最核心的功能之一,是实现分布式可扩展性的基础。
Hyperbase中,region分裂有多种触发策略可以配置,一旦触发,hyperbase会寻找分裂点,然后执行真正的分裂操作。
Region的拆分分为自动拆分和手动拆分,本文介绍手动拆分的两种方法。
本文介绍一下 TDH 平台上如何手动切分region的两种方法。
详细说明
方法一:通过hyperbase master的60010页面切分
该方法会把指定切分的region均分成大小相同的两个region。
案例说明
本案例将 hyperdrive表 hydrive_merge_test 的第一个region切分成两个region。
step1. 登录hyperbase 当前的 active master 的60010页面
-
任一hyperbase master角色的link链接打开
-
点击 【Master】 下的主机名,登录到当前 active master 节点
step2. 找到切分hyperdrive表的详情页面
-
在 【Table】栏找到需要切分的表,点击进入详情页面
-
在表详情页面也可以看到具体的region信息
可以看到,hyperdrive表hydrive_merge_test目前有4个region。
step3. 通过 【Split】 手动切分region
-
确认需要切分的具体region
本案例切分第一个region,region名字为:hydrive_merge_test,,1599470667949.d181bdfcbc2b025999e1ab1a8f7f52f9. -
通过【Split】切分
在 【Region Key】 一栏填写的region的hash值,也就是region 名字中最后一个字段两个 . 之间的值,即:d181bdfcbc2b025999e1ab1a8f7f52f9,然后点击【Split】按钮 。
跳转到下面页面,等待切分成功;
再次刷新表详情页面,region个数变成5个,切分成功。
方法二:通过hbase shell命令行切分
案例说明
本案例中 hyperbase 表 hbase_split_100w 有2个region,通过hbase shell命令行手动split 。
split 命令使用说明
split 'tableName'
split 'namespace:tableName'
split 'regionName'
split 'tableName', 'splitKey'
split 'regionName', 'splitKey'
split ‘tableName’ 命令演示说明
该操作会将每一个region都平均切分成2个。
-
查看hyperbase表切分前的region信息
-
通过hbase shell 命令行切分
hbase(main):018:0> split 'hbase_split_100w' 0 row(s) in 0.2290 seconds
-
再次查看hyperbase表切分后的region信息
split ‘regionName’ 命令演示说明
该操作将指定的region平均切分成2个。
-
查看hyperbase表切分前的region信息
-
通过hbase shell 命令行切分
本案例手动切分名字为 37ec237b8a860c1ce2886b081fd19a7d 的region。hbase(main):020:0> split '37ec237b8a860c1ce2886b081fd19a7d' 0 row(s) in 0.1270 seconds
-
再次查看hyperbase表切分后的region信息
split ‘tableName’, ‘splitKey’ 命令演示说明
该操作将 splitkey 所在的region切分成2个。
-
查看hyperbase表切分前的region信息
-
通过hbase shell 命令行切分
本案例以rowkey "350782199001010774" 来手动切分region。hbase(main):015:0> split 'hbase_split_100w','350782199001010774' 0 row(s) in 0.2020 seconds hbase(main):016:0>
-
再次查看hyperbase表切分后的region信息
可以看到该表以 "350782199001010774" 为界,将此region一分为二。
split ‘regionName’, ‘splitKey’ 命令演示说明
该操作将 splitkey 所在的region切分成2个。
-
查看hyperbase表切分前的region信息
-
通过rowkey查询记录所在的region
本案例以rowkey "350782199001010774" 来手动切分region。
通过查询hbase:meta
元数据表,来确定rowkey "350782199001010774" 记录所在的region。
由下面的命令可知,rowkey "350782199001010774" 记录所在的region为 441ba5d1a3eb56e9a7c8d1fc0f10c107。hbase(main):016:0> scan 'base:meta',{STARTROW=>'hbase_split_100w,350782199001010774,9999999999999',REVERSED=>true,LIMIT=>1} ROW COLUMN+CELL hbase_split_100w,310108199001012514,1610435 column=info:regioninfo, timestamp=1610435329237, value={ENCODED => 441ba5d1a3eb56e9a7c8d1fc0f10c107, NAME => 'hbase_split_100w, 328979.441ba5d1a3eb56e9a7c8d1fc0f10c107. 310108199001012514,1610435328979.441ba5d1a3eb56e9a7c8d1fc0f10c107.', STARTKEY => '310108199001012514', ENDKEY => '';} hbase_split_100w,310108199001012514,1610435 column=info:seqnumDuringOpen, timestamp=1610435329317, value=x00x00x00x00x00x00x00x01 328979.441ba5d1a3eb56e9a7c8d1fc0f10c107. hbase_split_100w,310108199001012514,1610435 column=info:server, timestamp=1610435329317, value=xixia03:60020 328979.441ba5d1a3eb56e9a7c8d1fc0f10c107. hbase_split_100w,310108199001012514,1610435 column=info:serverstartcode, timestamp=1610435329317, value=1610345230450 328979.441ba5d1a3eb56e9a7c8d1fc0f10c107. 1 row(s) in 0.0540 seconds
-
通过hbase shell 命令行切分
hbase(main):017:0> split '441ba5d1a3eb56e9a7c8d1fc0f10c107','350782199001010774' 0 row(s) in 0.1300 seconds
-
再次查看hyperbase表切分后的region信息
可以看到该表以 "350782199001010774" 为界,将此region一分为二。