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删除掉。
相关推荐
* Region拆分和合并:预建分区可以避免自动split,提高HBase的响应速度 * Region均衡:避免出现Region热点现象,按照table级别进行balance * 尽量只用1-2个列族:减少列族的数量可以提高HBase的性能 * 定期建表:...
《HBase应用最佳实践详解》 HBase,作为Apache Hadoop生态系统中的分布式列式数据库,以其高并发、大数据量处理能力而备受青睐。本实践详解将深入探讨HBase的安装、常用命令、优化策略以及典型应用场景,以帮助读者...
《HBase的Rowkey设计详解》 HBase作为一种高性能的分布式NoSQL数据库,因其在OLAP实时分析中的卓越性能而受到广泛关注。其核心特性之一便是通过Rowkey进行数据查询,因此Rowkey的设计对于HBase的读写性能至关重要。...
使用HBase的Compaction和Split机制,保持Region的平衡;并考虑使用二级索引提高查询效率。 六、总结 通过SpringBoot搭建的HBase可视化系统,使得非技术人员也能便捷地管理和操作HBase,降低了使用门槛,提高了工作...
通过Region Split策略调整数据分布,避免热点问题;还可以通过监控工具查看HBase的运行状态,及时发现和解决问题。 总的来说,HBase 2.0.1在CentOS 6.5上的单机安装涉及了系统环境配置、软件下载、配置文件定制等多...
### HBase核心概念与架构详解 #### HBase简介 HBase是一个开源的、面向列的分布式数据库系统,基于Google的Bigtable论文设计实现,并且是Hadoop生态系统中的关键组件之一。它提供了高可靠性、高性能、可伸缩性及...
2. Region管理:HBase的Region是数据分区的基本单位,你可以通过Ambari监控Region分布,进行手动Split或Merge操作。 3. 性能调优:通过调整HBase的配置参数,如MemStore大小、BlockCache设置等,可以优化读写性能。...
6. **大合并**:当单个Region的StoreFile总大小超过预设阈值时(默认10GB),会触发Region Split操作,将当前Region分成两个子Region,以实现负载均衡。 #### 三、HBase读数据流程详解 1. **获取RegionServer信息*...
#### 三、HBase架构详解 - **Region概念**: HBase的基本存储单元是Region,每个Region包含一个或多个列族的数据。Region可以跨服务器分布,以达到负载均衡的目的。 - **Store概念**: Store是Region内部的存储单位,...
5. **数据分布与分区**:解释HBase如何通过Region进行数据分区,以及Split过程。 6. **容错与高可用性**:讨论HBase的故障恢复策略,如RegionServer的故障切换。 7. **性能调优**:分享关于配置优化、读写性能提升、...
可以通过调整RegionServer配置、优化RegionSplit策略等方式来缓解。 - **RegionServer OOM**:当行的版本过多或者RowKey设计不合理时,可能导致RegionServer内存溢出。可以通过减少版本数量、优化RowKey设计等方法...
### HBase性能调优策略详解 #### 一、服务端参数配置优化 针对HBase的服务端性能调优,可以通过合理调整一系列关键参数来提升系统的稳定性和效率。下面将详细介绍几个核心参数及其调优方法。 ##### 1. `hbase....
《HBase列式数据库实战详解》 HBase,作为NoSQL数据库家族中的重要成员,尤其在大数据领域扮演着不可或缺的角色。它是一个分布式的、面向列的数据库,特别适合处理大规模数据。本篇将深入探讨HBase的核心操作,包括...
《HBase性能测试详解》 HBase,作为一款分布式、基于列族的NoSQL数据库,其性能优化至关重要。本文将深入探讨HBase的性能测试及其关键调优参数,旨在提升系统的稳定性和处理能力。 首先,表的设计是影响性能的关键...
6. ** hbadmin**:HBase的命令行工具,提供了诸如关闭、启动regionserver,进行Region Split和Merge等操作。它是HBase运维中的基础工具,实用性极高。 7. **HBase Shell**:HBase的交互式命令行接口,允许用户执行...
### HBase源码分析——关键知识点详解 #### 一、HBase性能测试总结与环境配置 **测试环境:** - **硬件配置:** - 1台客户端机器 - 5台RegionServer服务器 - 1台Master服务器 - 3台Zookeeper服务器 - **软件...