hbase之region切分(未完成)


一、需求

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、在分裂过程中如果出现问题,就会发生回滚操作

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容