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

相关推荐

  • wcf服务是什么(wcf服务参数调整)

    技术WCF服务增强的方法有哪些本篇内容介绍了“WCF服务增强的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!待

    攻略 2021年12月14日
  • QTableWidget添加表头菜单 并 可以通过表头菜单隐藏选中列

    技术QTableWidget添加表头菜单 并 可以通过表头菜单隐藏选中列 QTableWidget添加表头菜单 并 可以通过表头菜单隐藏选中列一、首先需要给QTableWidget安装事件
    二、重新实现

    礼包 2021年10月27日
  • Python爬虫框架有哪些

    技术Python爬虫框架有哪些这篇文章给大家分享的是有关Python爬虫框架有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、ScrapyScrapy是一个为了爬取网站数据,提取结构性数

    攻略 2021年10月28日
  • 臀大肌锻炼方法,臀部肌肉缕缩要做什么锻炼

    技术臀大肌锻炼方法,臀部肌肉缕缩要做什么锻炼臀大肌位于臀部臀大肌锻炼方法,被认为是人体最强壮的肌肉之一。它连接到尾骨或尾骨,以及其他周围的骨骼。臀大肌负责臀部和大腿的运动。下面是五种非常有效的锻炼臀部肌肉的方法,希望对您

    生活 2021年10月24日
  • 奔怎么组词,“奔”字的多音字怎么组词

    技术奔怎么组词,“奔”字的多音字怎么组词奔拼音:【bēn/bèn】其中奔【bèn】的意思和相关组词如下:奔【 bèn】1、直向目的地走去:投奔。直奔工地。他顺着小道直奔那山头。奔向小康。投奔【tóubèn】指前往依靠别人

    生活 2021年10月21日
  • 怎么解决MySQL报Error 1045错误问题

    技术怎么解决MySQL报Error 1045错误问题这篇文章主要讲解了“怎么解决MySQL报Error 1045错误问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么

    攻略 2021年11月18日