`
flyingdutchman
  • 浏览: 352987 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

《Hbase权威指南》深入学习hbase架构(4):文件压缩合并Compaction

阅读更多
    HRegoin Server上的storefile文件是被后台线程监控的,以确保这些文件保持在可控状态。磁盘上的storefile的数量会随着越来越多的memstore被刷新而变等于来越多——每次刷新都会生成一个storefile文件。当storefile数量满足一定条件时(可以通过配置参数类调整),会触发文件合并操作——minor compaction,将多个比较小的storefile合并成一个大的storefile文件,直到合并的文件大到超过单个文件配置允许的最大值时会触发一次region的自动分割,即region split操作,将一个region平分成2个,具体过程以后再说,这里不再赘述。

    合并操作有两种类型:轻量级的的minor compaction和重量级的major compaction
    Minor compaction主要负责将符合条件的最早生成的几个storefile合并生成一个大的storefile文件,它不会删除被标记为"删除"的数据和以过期的数据,并且执行过一次minor合并操作后还会有多个storefile文件。
    Minor compaction一次合并的文件数量由hbase.hstore.compaction.min(执行minor compaction的最少文件数)配置参数决定,该参数值的默认配置是3。该参数配置太大则会延迟触发minor合并操作,并且一次合并的文件数太多会占用更多的资源和执行更长的时间,这会带来不好的用户体验——毕竟hbase是要提供实时响应的。
    在一次minor操作一次最多允许10个文件,通过hbase.hstore.compaction.max参数设置,任何一个大于hbase.hstore.compaction.min.size值的storefile文件将自动成为将要被合并的storefile,hbase.hstore.compaction.min.size属性值与被用来设置将memstore执行flush操作的配置属性hbase.hregion.memstore.flush.size的值(默认为128MB)相同。
    Minor compaction操作有一个时间轴而的概念,那就是每次合并操作都是按storefile的生成时间有旧到新来合并文件的。如此下图所示:


    对比Minor compactionMajor compaction操作会把所有的storefile合并成一个单一的storefile文件,在文件合并期间系统会删除标记为"删除"标记的数据和过期失效的数据,同时会block所有客户端对该操作所属的region的请求直到合并完毕,最后删除已合并的storefile文件。
   
    到底如何决定触发那种类型的major类型的compaction操作呢?这是在compaction检查执行时被自动决定的。compaction检查可以通过以下三种条件触发:
    1、每当memstore被刷新到磁盘后触发;
    2、通过hbase shell命令行调用或API调用触发;
    3、通过一个叫CompacionChecker的后台线程触发。
    每一个region都运行着一个这样的后台线程。CompacionChecker会定期的执行compation检查,时间间隔可以通过hbase.server.thread.wakefrequency来配置。
    可以通过hbase shell命令行调用或majorCompact()API调用,从而强迫major合并操作执行,否则服务器会首先基于hbase.hregion.majorcompaction(24小时)的配置来检查是否要执行major合并操作。  
    由于Major compaction在执行期间会阻塞所有客户端的请求直到合并完毕,因此最好在服务器空闲时通过手工或脚本的方式调用执行,以提高客户体验。

    以下是两种compaction的区别: 
    
  


   
  • 大小: 33.7 KB
  • 大小: 28.2 KB
分享到:
评论

相关推荐

    HBase中Compaction及读缓存机制研究_王运萍

    将HBase作为研究对象,分析其存储架构,针对HBase存储机制进行深入研究

    tsd-compaction:HBase 0.96 -> Hbase 0.99 的压缩库。 它实现了 OpenTSDB Compaction 算法

    HBase 0.96 -> Hbase 0.99 的压缩库。 它实现了 安装 运行 Maven package mvn package 并将生成的 jar 文件复制到 HBase 的 CLASSPATH 中。 这通常在 /etc/hbase/hbase-env.sh 中定义 然后在hbase shell中更改TSDB...

    Hbase

    Hbase初探

    藏经阁-HBase In-Memory Compaction.pdf

    藏经阁-HBase In-Memory Compaction.pdf

    HBase内核及能力.pdf

    HBase的特性与生态:自动分区、LSM Tree、存储...全新的HBase2.0版本新功能:小对象存储MOB、读写链路Off-heap 、Region Replica 、In Memory Compaction 、Assignment MangerV2 、其他;HBase未来规划。 主要章节:

    hbase-思维导图.xmind.zip

    全面描述大数据列式存储HBase知识,涵盖概念、架构、工作原理、Hbase优化、读写流程、系统优化等方面。本思维导图内容全面,同时对Flush、compaction工作原理进行深度总结。是个非常不错的资源!

    Hbase_目录结构.pptx

    /hbase/archive (1) 进行snapshot或者升级的时候使用到的归档目录。compaction删除hfile的时 候,也会把旧的hfile归档到这里等。 /hbase/corrupt (2) splitlog的corrupt目录,以及corrupt hfile的目录。

    HBase配置项说明及调优建议.xlsx

    hbase 常用参数含义,默认值,调优建议(必须参数,split,compaction,blockcache,memstore flush,hlog,zookeeper,其他,等相参数名称、含义、默认值、调优建议)

    apache_hbase_reference_guide.pdf

    Apache Hbase 指南,3.0.0-SNAPSHOT 版本。 Intro,Configure,Upgrade,Shell,Data Model,Schema Design,Hbase and MapReduce,Security,Architecture,In-memory Compaction,Backup and Restore, ...

    HBaseInMemoryCompaction.pdf

    HBase In-Memory Compaction

    HBase最佳实践-列族设计优化

    随着大数据的越来越普及,HBase也变得...笔者总结至少有如下几个方面:HDFS相关配置优化,HBase服务器端优化(GC优化、Compaction优化、硬件配置优化),列族设计优化,客户端优化等,其中客户端优化在前面已经通过超

    SparkStreaming应用与实战全攻略(Ⅱ)

    背景与架构改造2.通过代码实现具体细节,并运行项目3.对Streaming监控的介绍以及解决实际问题4.对项目做压测与相关的优化5.Streaming持续优化之HBase6.管理Streaming任务点此阅读第一部分内容,本篇为第二部分,包括...

Global site tag (gtag.js) - Google Analytics