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文件的生成时间,从早到晚依次刷写.

  • 相关阅读:
    运行.bat批处理,CMD窗口隐藏,并制作为EXE文件
    TinyXML:一个优秀的C++ XML解析器(转载)
    2013编程之美资格赛【传话游戏】
    linux GTK教程(消息机制/标签/按钮/图像/文本/对话框/菜单/容器)
    c++强制类型转换(总结)
    string与char*的转换(转载)
    网络数据包捕获函数库Libpcap安装与使用(非常强大)
    Linux 高级Socket编程
    linux GTK 安装
    .dll和.lib文件的生成和使用 c++
  • 原文地址:https://www.cnblogs.com/bitbitbyte/p/13247766.html
Copyright © 2011-2022 走看看