我爱编程

hbase之region切分(未完成)

2018-02-11  本文已影响0人  和尚无灵感

一、需求

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

上一篇下一篇

猜你喜欢

热点阅读