如何理解HBase中的HFile合并过程

技术如何理解HBase中的HFile合并过程如何理解HBase中的HFile合并过程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。HBase 根据合并规

如何理解HBase中HFile的合并过程,针对这个问题,本文详细介绍了相应的分析和解答,希望能帮助更多想要解决这个问题的小伙伴找到更简单更容易的方法。

HBase根据整合的规模将比较分为两类:小规模整合和大规模整合。

Minor Compaction指的是选择一些小的和相邻的存储文件,并将它们合并成一个更大的存储文件。在此过程中,将不会处理“已删除”或“过期”单元格。小压缩的结果是存储文件越来越少。

Major Compaction指的是将所有的存储文件合并成一个存储文件。这个过程还会清理三种无意义的数据:删除数据、TTL过期数据、版本号超过设定版本号的数据。另外,一般来说,重大压实时间会持续很长时间,整个过程会消耗大量的系统资源,对上层业务影响很大。因此,所有在线业务都将关闭自动触发重大压缩的功能,而不是在业务高峰期手动触发。

00-1010数据加载到memstore中,数据不断增加,直到memstore满了,然后写入硬盘storefile。每次写入单个storefile,当store file数量达到一定量时,小store file就会合并成大store file,因为Hadoop不擅长处理小文件,文件越大性能越好。

00-1010可以通过三种方式触发压缩:Memstore刷盘、后台线程周期检查和手动触发。

1.Memstore Flush:

应该说,比较操作的来源来自于刷新操作。memstore flush会生成HFile文件,越来越多的文件需要压缩。因此,每次刷新操作后,将判断当前存储中的文件数量。一旦文件数量大于配置,就会触发压缩。需要注意的是,比较是在门店进行的,在Flush触发条件下,整个大区的所有门店都会执行compact,所以会在短时间内进行几次比较。

2.后台线程周期性检查:

后台线程定期触发以检查是否需要执行压缩,并且检查周期是可配置的。线程首先检查文件的数量是否大于配置,一旦大于,就会触发压缩。如果不是,则检查是否满足主要比较的条件。简单来说,如果当前存储中hfile的最早更新时间早于某个值mcTime,就会触发Major Comparison(默认7天触发一次,可以配置手动触发),HBase期望通过这个机制定期删除过期数据。

3.手动触发:

一般来说,手动触发比较通常是为了执行主要压缩。一般来说,有些情况需要手动触发组合。

是因为很多商家担心自动重大压缩会影响读写性能,所以会在低峰期选择手动触发。

也有可能用户希望在执行alter操作后立即生效,并手动触发主压缩;

是HBase管理员在硬盘容量不足时手动触发大压缩删除大量过期数据;

00-1010因为内存中的memstore是在数据插入的过程中进行排序的,也就是数据插入的时候是按顺序插入的,所以memstore中的数据是有序的。memstore的数据写入磁盘时,生成的storefile中的数据也是有序的,这样每个storefile中的数据分别是有序的。合并时,需要将有序存储文件合并成一个大的有序存储文件。

首先,要合并的storefile被封装到StoreFileScanners中,最后形成一个List并加载到内存中,然后封装到StoreFileScanners对象中。初始化此对象时,所有storefilescanner将被排序并放入内部队列,排序将根据每个storefilescanner的最小rowkey进行。然后,通过StoreScanner的next()方法,我们可以得到每个StoreScanner的最小行键中对应最小行键的KV对。然后,提取的KV对被另外写入合并的存储文件。因为每次都提取每个storefile中最小的数据,所以添加到合并storefile中的数据是从小到大排序的有序数据。

合并storefile的原因

合并过程中,删除logo的行和版本太旧的行将被丢弃。

(1)版本数可以预定义,超过此值将被丢弃。

(2)也可以预定义版本的长度,这次之后丢弃,合并后形成更大的故事文件。当达到该数量后再次合并,直到故事文件的容量超过一定阈值,将当前Region分成两部分,由Hmaster(hbase数据库的hbase节点)分配给不同的HRegionServer服务器,实现负载均衡。

如果在合并过程中碰巧有一个与storefile相关的查询,我们首先将小storefile加载到内存中进行合并。此时,如果有用户的访问,我们可以从内存中检索相关数据并返回给用户。我们可以想象,在内存中进行独立的镜像备份来提供查询的需求,另一个实体在另一个内存空间中合并。合并完成后,备份的内存空间将被释放并返回到原始状态。

关于如何理解HBase中的HFile合并过程的问题的答案在此分享。希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/113487.html

(0)

相关推荐

  • 深入理解flink实时大数据处理实践(大数据系统开发基础)

    技术怎么实现大数据处理引擎Spark与Flink比拼今天就跟大家聊聊有关怎么实现大数据处理引擎Spark与Flink比拼,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收

    攻略 2021年12月17日
  • 如何解决nginx"504网关超时"错误

    技术如何解决nginx“504 Gateway Time-out”错误这篇文章主要介绍“如何解决nginx“504 Gateway Time-out”错误”,在日常操作中,相信很多人在如何解决nginx“504 Gate

    攻略 2021年12月21日
  • 如何浅析C#打印和C#打印预览的实现

    技术如何浅析C#打印和C#打印预览的实现如何浅析C#打印和C#打印预览的实现,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们谈到C#打印和

    攻略 2021年11月24日
  • 中国四大吝啬鬼,欧洲文学有哪四个经典吝啬鬼

    技术中国四大吝啬鬼,欧洲文学有哪四个经典吝啬鬼欧洲文学作品中的四大吝啬鬼分别为:泼留希金、夏洛克、阿巴贡、葛朗台中国四大吝啬鬼。1、泼留希金泼留希金是俄国著名作家果戈理在名著《死魂灵》里塑造的吝啬鬼的典型人物形象。果戈理

    生活 2021年10月25日
  • 党的思想路线的核心是,实事求是思想路线的目的是什么

    技术党的思想路线的核心是,实事求是思想路线的目的是什么实事是客观存在着的一切事物党的思想路线的核心是,求是我们去探究,是就是事物发展的规律,也就是按照事物的本来面貌去发掘事物发展的规律,而规律是主观认识,但必须与实事相符

    生活 2021年10月26日
  • Go语言之内置函数与包函数

    技术Go语言之内置函数与包函数 Go语言之内置函数与包函数一、内置函数
    Golang中为了编程方便,提供了一些函数,这些函数可以直接使用,称之为Go的内置函数。详情查看:https://studygol

    礼包 2021年11月22日