美文网首页
Hbase_三大内部原理

Hbase_三大内部原理

作者: Eqo | 来源:发表于2022-08-05 17:11 被阅读0次

Hbase三大内部原理

1.memstore flush

Flush操作就是将memstore内存当中的数据持久化到磁盘,也就是Hfire上,Flush后的文件都是小文件

  • 自动触发
    2.0之前

    • region的memstore的触发
      达到memstore的阈值就自动触发

    hbase.hregion.memstore.flush.size=128M

    • 当memstore数据写入速度很快时:4倍的flush.size,也就是512M
    • regionserver的触发级别:所有region所占用的memstore达到阈值,就会 触发整个regionserver中memstore的溢写,从memstore占用最多的Regin开始flush
    • region分区数据占 rs的jvm内存的40%
      2.0之后
      设置flush的最小阈值

    memstore的判断发生了改变:
    max(
    "hbase.hregion.memstore.flush.size / column_family_number",
    hbase.hregion.percolumnfamilyflush.size.lower.bound.min
    )
    其中:
    hbase.hregion.memstore.flush.size=128M
    hbase.hregion.percolumnfamilyflush.size.lower.bound.min=16M

    相当于 水位线 = max(128/列族个数 , 16M) 进行对比

  • 工作当中 手动触发,为了避免 flush过程当中大量的资源消耗在服务器io的高峰期,我们一般在工作中手动flush

自动Flush的阈值


2.StoreFile Compaction

  • minor compaction 小合并
    1.将规定数量的StoreFile==合并成一个StoreFile==,简单的数量合并
    2.占用资源不多

hbase.hstore.compaction.min=3

  • maxor 大合并
    1.将所有的StoreFile==文件合并成一个大的StoreFile,整体有序
    2.合并过程,会清理过期数据,和已经被删除的数据
    3.占用资源量巨大
    所以Hbase当中真正的数据删除发生在大合并的时候
  • 2.0之后 In-memory compaction
    在内存中进行数据合并,将存入memstore的数据化成,一个个 segment然后将其合并

hbase.hregion.compacting.memstore.type=None|basic|eager|adaptive

basic 基础型
不清除多余版本,适用于大数据量写模式
eager(饥渴型)
过滤重复的数据,清理多余的版本,这会带来额外的开销

adaptive(适应型)

adaptive compaction根据数据的重复情况来决定是否使用eager策略
找出cell个数最多的一个,然后计算一个比例,如果比例超出阈值,则使用eager策略,否则使用basic策略

工作当中 手动选择合并
在工作中要避免自动触发major compaction,影响业务,所以禁用自动进行major compaction。

hbase.hregion.majorcompaction=0


3.region split

当一个region内的数据量特别大的时候,region就会分裂成两个region

  • region阈值

hbase.hregion.max.filesize=10GB
达到这个阈值后,region会分裂成两个5g的region

-0.94开始:如果region个数在0 ` 100之间
-2.x 开始 判断region的个数是否为1,为1安256m分 不唯一按照10gb分

  • region 预分区
    建表的时候 手动的指定分割端 实现预分区
create 'itcast:t6','cf1',SPLITS =>['a','b','c']
#这样建表 直接就有了4个分区  叫做预分区
#再结合rowkey的设计 把不同的数据存储在不同的region中  

工作当中建议手动操作

相关文章

  • Hbase_三大内部原理

    Hbase三大内部原理 1.memstore flush Flush操作就是将memstore内存当中的数据持久化...

  • Git 内部原理

    Git 内部原理

  • Hbase_读写流程

    Hbase架构图 Hbase写操作 执行put命令,put 'namspace:table','rowkey',...

  • [基础]Object.prototype.toString内部原

    运行截图: 内部运行原理 参考

  • for 循环内部原理

    先上代码: 上述代码也等同于 分析: 1、在遍历Foo的实例对象时,执行for...in...时,首先会先执行it...

  • SDWebImage 内部原理

    现在经常遇到问到三方原理,比如SDWebImage,涉及哪些关键类,哪些缓存策略等等。这块具体分析加载一个图片原理...

  • Flutter内部原理

    Flutter在内部实际上是如何工作的? 什么是Widget、 Element、 BuildContext、 Re...

  • String内部原理

    描述 String内部是final修饰的char[]。下文定义方法获取String内部char[]的hashCod...

  • KVO内部原理

    #import "ViewController.h" #import "lzhProson.h" @interfa...

  • Zookeeper内部原理

    Leader选举 选举机制 半数机制:集群中半数以上集群存储就可用,建议安装奇数台 Zookeeper在配置没有没...

网友评论

      本文标题:Hbase_三大内部原理

      本文链接:https://www.haomeiwen.com/subject/psbpwrtx.html