HBase合并
本期就给大家带来HBase的合并的小技巧。无论是在大数据开发的学习中还是其他的学习,小技巧都能够在我们的学习路上带来很多实用的帮助。
一、概述
老规矩,先来给大家复习下一些基础知识,免得又忘了。
HBase表的基本单位是Region,日常调用HBase API操作一个表时,交互的数据也会以Region的形式进行呈现。前面介绍过HBase Region拆分策略原理,一个表可以有若干个Region,本文主要介绍Region合并的一些问题和解决方法。
什么是HBase Compaction?
简单来说就是HBase将Region中的Store中的一些HFile进行合并。
二、合并原因及原理
原因:这个需要从Region的Split来说。当一个Region被不断的写数据,达到Region的Split的阀值时(由属性hbase.hregion.max.filesize来决定,默认是10GB),该Region就会被Split成两个新的Region。随着业务数据量的不断增加,Region不断的执行Split,那么Region的个数也会越来越多。
一个业务表的Region越多,在进行读写操作时,或是对该表执行Compaction操作时,此时集群的压力是很大的。这里笔者做过一个线上统计,在一个业务表的Region个数达到9000+时,每次对该表进行Compaction操作时,集群的负载便会加重。而间接的也会影响应用程序的读写,一个表的Region过大,势必整个集群的Region个数也会增加,负载均衡后,每个RegionServer承担的Region个数也会增加。
因此,这种情况是很有必要的进行Region合并的。比如,当前Region进行Split的阀值设置为30GB,那么我们可以对小于等于10GB的Region进行一次合并,减少每个业务表的Region,从而降低整个集群的Region,减缓每个RegionServer上的Region压力。
其合并原理分为三步:排序文件、合并文件、代替原文件服务。
HBase首先从待合并的文件中读出HFile中的key-value,再按照由小到大的顺序写入一个新文件(storeFile)中。这个新文件将代替所有之前的文件,对外提供服务。
在分析合并Region之前,我们先来了解一下Region的体系结构,如下图所示:
从图中可知
HRegion:一个Region可以包含多个Store;
Store:每个Store包含一个Memstore和若干个StoreFile;
StoreFile:表数据真实存储的地方,HFile是表数据在HDFS上的文件格式。
当HBase合并时,会清空以下三种数据
1.标记为删除的数据。
当我们删除数据时,HBase并没有把这些数据立即删除,而是将这些数据打了一个个标记,称为“墓碑”标记。在HBase合并时,会将这些带有墓碑标记的数据删除。
2.TTL过期数据
TTL(time to live)指数据包在网络中的时间。如果列族中设置了TTL过期时间,则在合并的过程中,发现过期的数据将被删除。
3.版本合并
若版本号超过了列族中预先设定的版本号,则将最早的一条数据删除。
如:列族设置版本号是5,当此列族第六次保存数据时,会将最早一次数据删除。
三、HBase合并分类
1.Minor Compaction(小合并)
小合并是指将相邻的StoreFile合并为更大的StoreFile。
2.Major Compaction(大合并)
大合并是将多个StoreFile合并为一个StoreFile。
四、合并的触发时机
(1)MEMStore Flush
内存中的数据flush刷写到硬盘上以后,会对当前Store中的文件进行判断,当数量达到阈值,则会触发Compaction。Compaction是以Store为单位进行合并的。当Flush刷写完成后,整个Region的所有Store都会执行Flush。
(2)后台线程周期性的检查
Compaction Checker线程定期检查是否触发Compaction,Checker会优先检查文件数量是否大于阈值,再判断是否满足major Compaction的条件的时间范围内,如果满足,则触发一次大合并Major Compaction。
(3)手动触发
1.由于很多业务担心MajorCompaction影响读写性能,所以选择在低峰期手动触发合并。
2.当用户修改表结构后,希望立刻生效,则手动触发合并。
3.运维人员发现硬盘空间不够,则会手动触发合并,因为删除了过期数据,腾出空间。
【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与联系我们,我们会予以更改或删除相关文章,以保证您的权益!此页面下方声明无效!

猜你喜欢LIKE
相关推荐HOT
更多>>
HDFS架构演进之路
当active Namenode出现故障或者宕机的时候,standby会自动切换为新的active Namenode对外提供服务,并且HA对外提供了统一的访问名称,对于用户...详情>>
2022-12-09 15:44:00
大数据开发:Hive小文件合并
Hadoop生态技术体系下,负责大数据存储管理的组件,涉及到HDFS、Hive、Hbase等。Hive作为数据仓库工具,最初的存储还是落地到HDFS上,这其中就...详情>>
2022-12-09 15:42:00
HDFS的故障恢复和高可用
客户端读取文件时,会先校验该信息文件与读取的文件,如果校验出错,便请求到另一DataNode读取数据,同时向NameNode汇报,以删除和复制这个数据...详情>>
2022-12-09 15:41:00
大数据开发:Flink on Yarn原理
这个Container通过Application Master启动进程,Application Master里面运行的是Flink程序,即Flink-Yarn ResourceManager和JobManager。详情>>
2022-12-09 15:39:00
大数据开发基础:Java基础数据类型
在Java基础入门学习阶段,Java基础数据类型无疑是基础当中的重点,掌握基础数据类型,对于后续去理解和掌握更深入的理论,是有紧密的关联性的。...详情>>
2022-12-09 15:38:13大数据培训问答更多>>
新大数据都学什么?5大核心知识必学内容有哪些
新大数据报班多少钱?如何选择培训机构
新人工智能学什么?自学可以成才吗
新数据处理包括哪些内容?是不是所有课程需要分别报课
新大数据分析需要学什么?怎么学比较好
新人工智能专业学什么?人工智能有哪些课程
新大数据数据分析师要学什么?好就业吗
大数据面试题库 更多>>
大数据的五个V是什么?
数据及集群管理(三)
数据及集群管理(二)
数据及集群管理(一)
大数据之hbase的优化读数据方面
大数据之hbase的优化写入数据方面
- 北京校区
- 大连校区
- 广州校区
- 成都校区
- 杭州校区
- 长沙校区
- 合肥校区
- 南京校区
- 上海校区
- 深圳校区
- 武汉校区
- 郑州校区
- 西安校区
- 青岛校区
- 重庆校区
- 太原校区
- 沈阳校区
- 南昌校区
- 哈尔滨校区
