一、需求
hbase中有一张article表,article有一个blog列族,通过for循环对表插入10000行数据
article在hdfs上存储路径对应:/hbase/data/default/article/70ad7d9367edb1eb72dc31d7ae181432/....................
手动执行split操作,让一个region切分成2个子region
父region:70ad7d9367edb1eb72dc31d7ae181432
子region A:4ead66de67ac2a3b11c770a2bb2f1286
子region B:c7e0f54bfde759662ca2e47ebe1e0a12
二、执行过程
1、父region下创建一个splits目录
/hbase/data/default/article/70ad7d9367edb1eb72dc31d7ae181432/.splits
2、父region被关闭,不在对外服务,同时将region中的数据持久化到磁盘上
3、创建daughter A和daughter B
/hbase/data/default/article/70ad7d9367edb1eb72dc31d7ae181432/.splits/daughter A
/hbase/data/default/article/70ad7d9367edb1eb72dc31d7ae181432/.splits/daughter B
4、创建引用文件
/hbase/data/default/article/70ad7d9367edb1eb72dc31d7ae181432/.splits/daughter A/reference_files
/hbase/data/default/article/70ad7d9367edb1eb72dc31d7ae181432/.splits/daughter B/reference_files
5、新region生成
父region分裂成2个region,同时将daughter A和daughter B拷贝到hbase根目录下
引用文件目录
/hbase/data/default/article/4ead66de67ac2a3b11c770a2bb2f1286/blog/c86b8b7419d84cf1bdfd787931b6e63e.70ad7d9367edb1eb72dc31d7ae181432
/hbase/data/default/article/c7e0f54bfde759662ca2e47ebe1e0a12/blog/c86b8b7419d84cf1bdfd787931b6e63e.70ad7d9367edb1eb72dc31d7ae181432
c86b8b7419d84cf1bdfd787931b6e63e.70ad7d9367edb1eb72dc31d7ae181432 就是 reference_files
c86b8b7419d84cf1bdfd787931b6e63e hfile文件
70ad7d9367edb1eb72dc31d7ae181432 region名称
6、compact
合并过程中使用的临时文件夹
/hbase/data/default/article/4ead66de67ac2a3b11c770a2bb2f1286/.tmp
/hbase/data/default/article/c7e0f54bfde759662ca2e47ebe1e0a12/.tmp
合并操作会在.tmp文件中进行,合并过程就是讲父region的存储文件异步重写到2个子region中。一旦生成重写之后的文件,它们将自动取代引用文件
7、删除父region
8、在分裂过程中如果出现问题,就会发生回滚操作