如何理解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)

相关推荐

  • 【CSS】让图片在高宽固定的div里水平垂直都居中的三种办法

    技术【CSS】让图片在高宽固定的div里水平垂直都居中的三种办法 【CSS】让图片在高宽固定的div里水平垂直都居中的三种办法效果:实现一:绝对定位加精算!DOCTYPE html
    html
    head

    礼包 2021年12月21日
  • PHP BnbTool开发包有哪些特性

    技术PHP BnbTool开发包有哪些特性本篇内容介绍了“PHP BnbTool开发包有哪些特性”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔

    攻略 2021年11月26日
  • 怎么剖析volatile、synchronized实现原理

    技术怎么剖析volatile、synchronized实现原理这篇文章给大家介绍怎么剖析volatile、synchronized实现原理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言在java

    攻略 2021年11月15日
  • c++编译器(c++用什么软件编程)

    技术C++ OpenCV如何模拟实现微信跳一跳小编给大家分享一下C++ OpenCV如何模拟实现微信跳一跳,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!实机演示Gif:思路:获取小黑人的位置,获得目标方

    2021年12月17日
  • MongoDB的本质及怎么进行安装配置

    技术MongoDB的本质及怎么进行安装配置这期内容当中小编将会给大家带来有关MongoDB的本质及怎么进行安装配置,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。如果你从来没有接触Mon

    攻略 2021年11月3日
  • CSS代码重构与优化的方法有哪些

    技术CSS代码重构与优化的方法有哪些本篇内容主要讲解“CSS代码重构与优化的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS代码重构与优化的方法有哪些”吧!CS

    攻略 2021年12月10日