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

相关推荐

  • 熟络是什么意思,你觉得“自来熟”是好事吗

    技术熟络是什么意思,你觉得“自来熟”是好事吗当今社会社交十分重要,因为现在社会是一个配合的社会,不是单打独斗的社会,很多事情都要配合来完成,因此良好的社交能力就非常重要,有的人很外向,不管见到谁都立刻表现的很熟络,也就是

    生活 2021年10月29日
  • 没插耳机显示耳机模式怎么办,手机成耳机模式了怎么办

    技术没插耳机显示耳机模式怎么办,手机成耳机模式了怎么办手机成耳机模式有两种情况 没插耳机显示耳机模式怎么办:第一  就是你在设置里调成的耳机模式 第二   你的手机耳机插孔在你插入耳机的时候被插坏了 把里面的铜片接触到了

    生活 2021年10月30日
  • Docker Compose怎么搭建 Redis Cluster集群环境

    技术Docker Compose怎么搭建 Redis Cluster集群环境Docker Compose怎么搭建 Redis Cluster集群环境,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方

    攻略 2021年12月10日
  • 野蛮生长的电子烟凛冬将至

    技术野蛮生长的电子烟凛冬将至 野蛮生长的电子烟凛冬将至11月26日,随着相关“烟草专卖法实施条例”的修改,电子烟正式纳入烟草管理规定。就在不久前,国家卫健委等8部门联合印发了《关于进一步加强青少年控烟工

    礼包 2021年11月30日
  • WCF传byte[]的方法是什么

    技术WCF传byte[]的方法是什么这篇文章给大家介绍WCF传byte[]的方法是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。如果想让WCF传输byte[]数组,那么需要使用Mtom。bing

    攻略 2021年11月17日
  • 操作系统是一套什么程序的集合

    技术操作系统是一套什么程序的集合本篇内容介绍了“操作系统是一套什么程序的集合”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成

    攻略 2021年11月8日