zoukankan      html  css  js  c++  java
  • HBase之写流程中的刷写时机

    目的

    1. 在执行刷写时,将部分过时的数据舍去,最多保留列族VERSIONS数量的put类型的cell.
    2. 在刷写时,会将memstore中的rowkey进行排序后,再刷写,方便在查询时,快速检索数据

    手动刷写

    flush "表名"
    flush "region名"

    刷写后磁盘上的HFile文件可以通过HBase提供的工具查看

    habase org.apache.hadoop.hhase.io.hfile.HFile -e -p -f 文件路径

    自动刷写

    基于Memstore的刷写:

    单个memstore的大小,超过flush.size时, 当前memstore的所有region的所有列族都会刷写.

    hbase.hregion.memstore.flush.size(默认128M)

    单个memstore大小超过: flush.size * block.multiplier时, 会阻塞客户端向此memstore的写入

    hbase.hregion.memstore.flush.size(默认值128M)
    * hbase.hregion.memstore.block.multiplier(默认值4)

    基于Regionserver的刷写:

    一个regionserver负责多个region,每个region又包含多个store对象,每个store对象都有一个memstore.

    当一个regionserver负责的所有memstore总大小超过

    java_heapsize
    * hbase.regionserver.global.memstore.size(默认值0.4)
    * hbase.regionserver.global.memstore.size.lower.limit(默认值0.95)

    此时, regionserver会将负责的所有memstore按照大小排序, 从大到小依次刷写,直到总大小低于以上阈值.

    如果regionserver所负责的所有的store对象的memstore总大小已经超过

    java_heapsize
    *hbase.regionserver.global.memstore.size(默认值0.4)

    此时,会阻塞客户端向当前regionserver的所有region的写入.

    基于时间的刷写:

    ​ 默认每间隔base.regionserver.optionalcacheflushinterval(默认1小时),自动刷写

    基于WAL处理文件的刷写:

    ​ 如果正在使用的WAL文件的memstore数量超过32时,此时会根据WAL文件的生成时间,从早到晚依次刷写.

  • 相关阅读:
    客户端IP获取
    文件下载公共方法 以及调用
    文件压缩和解压缩工具类
    下载
    URLencoder类防止下载后的文件名乱码
    SQL行转列
    处理千万级以上的数据提高查询速度的方法
    获取本月的第一天和最后一天
    【机器学习理论】概率论与数理统计--假设检验,卡方检验,t检验,F检验,方差分析
    【机器学习实践】Jupyter Notebook安装 侧边导航栏功能 操作及其他常用扩展功能介绍
  • 原文地址:https://www.cnblogs.com/bitbitbyte/p/13247766.html
Copyright © 2011-2022 走看看