需根据Hbase的目录结构来分析,该过程完成迅速,只是在为region创建两个引用文件,每个持有原region的一半
HBase将整个切分过程包装成了一个事务,意图能够保证切分事务的原子性。
- 首先regionserver在父region下创建切分目录,当创建成功后会关闭该region
- 在切分目录下创建相应的文件结构:两个子region目录以及引用文件,每个引用文件指向原始reion的一半记录。若此过程成功,则将两个子region目录移动至表目录下。同时meta表进行更新,表示父region已经被切分,避免再被错误打开
- 开启多个线程异步将原region的数据真正的写成两半,取代引用文件,发生在子region的temp目录下,一旦文件生成,则替代引用文件
- 当切分完成后,原region 被删除。Master 收到这次切分的通知后根据reionserver的负载情况选择是否进行region迁移