1、检查是否需要进行Region Split的时机:
每次flush或者compact之后,regionserver都会去检查是否满足了Split的条件。
2、Region Split的过程如下:
(1)RegionServer在Zookeeper上创建一个/hbase/region-in-transition/region-name结点,并设置结点的内容为SPLITTING
(2)由于Master监听/hbase/region-in-transition,所以(1)发生时,Master会收到相应的通知。
(3)RegionServer在HDFS上的parent’s region 目录下创建一个.splits目录
(4)RegionServer关闭ParentRegion,同时强制执行flush操作,并在RegionServer的本地数据结构中将该Region标记为offline状态。此时当客户端再请求该ParentRegion时,会抛出NotServingRegionException的异常,客户端会不断的进行尝试。
(5)RegionServer在.splits目录下创建daughter regions A and B两个子目录,并创建对应的数据结构。然后,RegionServer开始对ParentRegion中所有StoreFile执行Split的操作。此阶段RegionServer只会为ParentRegion中的每一个StoreFile创建两个索引文件。
(6)RegionServer在HDFS上分别为daughterA Region和daughterB Region创建实际的存储目录
(7)RegionServer向.META.表发送一个Put请求。此请求首先将.META.表中的ParentRegion标记为offline,然后将daughterA Region和daughterB Region的信息添加到.META.表中。但是此时在.META.表并不存在代表daughterA和daughterB的单独实体。此时查询.META.表,我们将看到ParentRegion正在进行Split,但是看不到daughter的信息。如果RegionServer 执行Put操作执行成功,那么ParentRegion将会被成功的Split。如果RegionServer执行Put操作失败,Master和下一个打开ParentRegion的RegionServer会将关于ParentRegion的Split操作的脏数据删除掉。
(8)RegionServer打开daughterA Region和daughterB Region,然后daughter Region开始接受写请求。
(9)RegionServer将daughterA 和daughterB 的信息添加到.META.表中。之后,客户端才能够发现daughterA 和daughterB region,并向daughter Region发送请求。
(10)RegionServer 将zookeeper上的/hbase/region-in-transition/region-name结点的状态更新为SPLIT,此时Master会收到状态更新的通知,然后Balanceer可以将daughter Region指定到其他的RegionServer上。
(11) Split过程结束之后,HDFS和META中还会保留着指向parent region的索引文件的信息。这些索引文件会在daughter Region执行Major Compact来对StoreFile进行重写时删除掉。Master中的Garbage collection任务会周期性的检查daughter regions中是否还包含指向parents Region的索引文件,如果不包含,Master会将parents Region删除掉。
相关推荐
VMware10+CentOS6.5+Hadoop2.2+Zookeeper3.4.6+HBase0.96安装过程详解 用于解决分布式集群服务器
HBASERegion数量增多问题描述及解决方案.docx
VMware10+CentOS6.5+Hadoop2.2+Zookeeper3.4.6+HBase0.96安装过程详解.pdf
hbase shell命令详解
HBase基本数据操作详解,分享给大家!
Hbase协处理器详解,进阶篇
HBase应用最佳实践详解.pptx
HBase应用最佳实践详解.pdf
HBase+ElasticSearch搭建过程详解
HBase的region split策略一共有以下几种: 1、ConstantSizeRegionSplitPolicy 0.94版本前默认切分策略 当region大小大于某个阈值(hbase.hregion.max.filesize=10G)之后就会触发切分,一个region等分为2个region。 ...
HBase系统中Region自动切分是如何实现的,这里面涉及很多知识点,比如Region切分的触发条件是什么、Region切分的切分点在哪里、如何切分才能最大的保证Region的可用性、如何做好切分过程中的异常处理、切分过程中要...
HBase官方指南——配置详解篇;HBase官方指南——配置详解篇
第二部分,对Hbase进行基本的概述,主要介绍其中基本原理,第三部分对Hbase的技术进行详解,包括关键成员和技术优化。第四部分,通过一个小的java api案例,介绍Hbase的开发使用,详细分析hbase的应用场景和优化方式...
来自一位老学姐的Hbase安装详细教程(清华大学镜像下)及基本操作,希望能带给你们些许帮助。主要包含Hbase的下载过程及其遇到的小问题,后续会继续完善该文档!
介绍布隆过滤器的原理,实现,结构,优缺点,以及误判率估计和最优哈希个数,其中还有含有公式的详细推到过程。
hbase-region-inspector, HBase区域统计信息的可视化仪表板 hbase-region-inspectorHBase区域统计信息的可视化仪表板。 用法下载与HBase集群版本匹配的可执行二进制插件,添加execute权限,并使用以下命令行参数启动...
Hbase过滤器详解,基础篇
HBASE的一个读取数据流程的解析,清晰的画出整个过程,十分有利于理解
Hbase Java API详解 是开发hbase 数据库很好的收 对初学者有好友