`
brianf
  • 浏览: 37408 次
  • 来自: 杭州
社区版块
存档分类
最新评论

HBase HFile和Hlog的cleaner执行流程和配置项

阅读更多
HFile和Hlog是HBase中两大文件存在格式,HFile用于存储数据,Hlog用于保证数据写入HFile中。
两者都有自己的cleaner逻辑。HFileCleaner和LogCleaner都是继承CleanerChore类
public class HFileCleaner extends CleanerChore<BaseHFileCleanerDelegate>
public class LogCleaner extends CleanerChore<BaseLogCleanerDelegate>

需要说明的是LogCleaner 除了默认的org.apache.hadoop.hbase.master.TimeToLiveLogCleaner
如果开启了replication,还会执行hadoop.hbase.replication.master.ReplicationLogCleaner
当replication处理完一个Hlog后会删除Zookeeper上的hlog节点,ReplicationLogCleaner会默认每60扫描( 60s  int cleanerInterval = conf.getInt("hbase.master.cleaner.interval", 60 * 1000)).oldlogs目录中的每个一个hlog, 检查ZK是否已经删除,如果ZK上已经不存在该Hlog,则会从物理上直接删除该hlog

在实际Master启动时,执行逻辑的是
Hmaster.run()->
Hmaster.finishInitialization()->
startServiceThreads()->执行下面的代码就是初始化HFileCleaner和LogCleaner
   //start the hfile archive cleaner thread
   LOG.info("INIT HFILE cleaner");
    Path archiveDir = HFileArchiveUtil.getArchivePath(conf);
    this.hfileCleaner = new HFileCleaner(cleanerInterval, this, conf, getMasterFileSystem()
        .getFileSystem(), archiveDir);
    Threads.setDaemonThreadRunning(hfileCleaner.getThread(), n + ".archivedHFileCleaner");
   LOG.info("INIT Hlog cleaner");
   
   this.logCleaner =
      new LogCleaner(cleanerInterval,
         this, conf, getMasterFileSystem().getFileSystem(),
         getMasterFileSystem().getOldLogDir());
         Threads.setDaemonThreadRunning(logCleaner.getThread(), n + ".oldLogCleaner");
最终在CleanerChore类中执行 initCleanerChain(confKey)完成初始化。

  private void initCleanerChain(String confKey) {
    this.cleanersChain = new LinkedList<T>();

    LOG.info(" initCleanerChain Start" );
    String[] logCleaners = conf.getStrings(confKey);  //confkey=hbase.master.logcleaner.plugins or  hbase.master.hfilecleaner.plugins
    if (logCleaners != null) {
      for (String className : logCleaners) {

        LOG.info(" initCleanerChain:"+ className );
        T logCleaner = newFileCleaner(className, conf);
        if (logCleaner != null) this.cleanersChain.add(logCleaner);
      }
    }
  }


  public static final String TTL_CONF_KEY = "hbase.master.hfilecleaner.ttl";
  // default ttl = 5 minute
  private static final long DEFAULT_TTL = 60000 * 5;




Hfile的cleaner 配置项
hbase.master.hfilecleaner.plugins
默认:org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner

hbase.master.hfilecleaner.ttl";
默认: 60000 * 5;  5分钟



Hlog cleaner 配置项
hbase.regionserver.optionallogflushinterval
将Hlog同步到HDFS的间隔。如果Hlog没有积累到一定的数量,到了时间,也会触发同步。默认是1秒,单位毫秒。
默认: 1000
hbase.regionserver.logroll.period
提交commit log的间隔,不管有没有写足够的值。
默认: 3600000 (1个小时)
hbase.master.logcleaner.ttl
Hlog存在于.oldlogdir 文件夹的最长时间, 超过了就会被 Master 的线程清理掉.
默认: 600000   (10分钟)
hbase.master.logcleaner.plugins
值用逗号间隔的文本表示。这些WAL/HLog  cleaners会按顺序调用。可以把先调用的放在前面。可以实现自己的LogCleanerDelegat,加到Classpath下,然后在这里写上类的全路径就可以。一般都是加在默认值的前面。
具体的初始是在CleanerChore 的initCleanerChain方法,此方法同时也实现HFile的cleaner的初台化。
默认: org.apache.hadoop.hbase.master.TimeToLiveLogCleaner

hbase.regionserver.hlog.blocksize
hbase.regionserver.maxlogs

WAL的最大值由hbase.regionserver.maxlogs * hbase.regionserver.hlog.blocksize (2GB by default)决定。一旦达到这个值,Memstore flush就会被触发。通过WAL限制来触发Memstore的flush并非最佳方式,这样做可能会会一次flush很多Region,引发flush雪崩。

最好将hbase.regionserver.hlog.blocksize * hbase.regionserver.maxlogs 设置为稍微大于hbase.regionserver.global.memstore.lowerLimit * HBASE_HEAPSIZE.
1
0
分享到:
评论

相关推荐

    HBASE hfile v2 format

    hbase hfile v2 format draft 描述存储结构

    hbase-shell批量命令执行脚本的方法

    批量执行hbase shell 命令 #!/bin/bash source /etc/profile exec $HBASE_HOME/bin/hbase shell &lt;&lt;EOF truncate 'tracker_total_apk_fact_zyt' major_compact('t_abc') disable 't_abc' drop 't_abc' create...

    hbase-site.xml.doc

    八、HBase HFile Cleaner 配置 * hbase.master.hfilecleaner.plugins:org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner,这个参数指定了清理 HFile 的程序。 九、HBase RegionServer 配置 * ...

    hadoop+hbase+zookeeper集群配置流程及文件

    提供的文档`hadoop_zookeeper_hbase集群配置.docx`应包含详细的步骤和配置示例,而`配置文件.rar`则可能包含了预设的配置模板,可以作为配置参考。在实际操作时,务必根据具体环境调整配置,确保所有节点之间的网络...

    基于集群的HBase安装和配置

    ### 基于集群的HBase安装和配置 #### Zookeeper简介 Zookeeper作为Hadoop生态中的关键组件,主要用于提供高可用性和分布式协调服务。它能够有效地管理Hadoop集群中的各种资源和服务,例如Hadoop NameNode管理和...

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

    在大数据存储领域,HBase作为一个分布式列式数据库,被广泛应用于处理海量结构化数据。...这份资料中的“HBase配置项说明及调优建议.xlsx”应该包含了详细的参数解释和实践案例,是学习和优化HBase不可或缺的参考资源。

    hbase和zookeeper配置

    HBase 和 ZooKeeper 配置详解 HBase 和 ZooKeeper 是两个非常重要的分布式系统组件,分别用于分布式数据库和分布式协调服务。今天,我们将详细介绍如何配置 HBase 和 ZooKeeper,以便更好地理解它们之间的交互。 ...

    hbase备份和数据恢复

    总结,HBase备份和数据恢复涉及到多种策略和工具,包括快照、HLog备份和HDFS数据备份。而HBase与Hive的互导以及与HDFS的互导则为大数据分析提供了灵活的数据流转路径。理解和掌握这些知识点对于管理和优化大数据环境...

    Hbase几种入库方式

    HFile 是 Hbase 的存储文件格式,预先生成 HFile 后,可以将其直接加载到 Hbase 中。这是一种高效的入库方式,尤其是在大规模数据集的情况下。预先生成 HFile 入库的优点是快捷、可靠,缺点是需要提前生成 HFile,...

    hbase配置内置的zookeeper

    除了基本的配置和启动外,还可以进行更高级的操作,例如创建新的 HBase 表、删除表等。例如: - 创建表 `scores` 并添加列族 `grade`: ```shell create 'scores','grade' ``` - 删除表 `scores` 中的 `grade` ...

    Hbase-Cleaner:Hbase-Cleaner

    Hbase-Cleaner 按期间清理 Hbase 中的行 跑步: node cleaner.js 配置: { "hbase_host": "u.hbase.host", "hbase_port": "8080", "params": { "startTime": "1388534400000", "endTime": "1498535400000", ...

    hadoop mr file2hfile2hbase

    在将数据加载到HBase之前,通常会先将数据转换成HFile,以便于后续的高效写入和存储。 **MapReduce过程**: 1. **数据预处理**:首先,你需要准备要导入到HBase的数据,这些数据通常是以文本文件的形式存在。确保...

    HbaseTemplate 操作hbase

    通过HbaseTemplate,我们可以执行常见的CRUD(创建、读取、更新和删除)操作以及更复杂的查询。 1. **HbaseTemplate的初始化**:在使用HbaseTemplate之前,我们需要在Spring配置文件中配置HBase的相关连接信息,如...

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

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

    hbase安装与配置.docx

    在Linux环境下,构建基于Hadoop集群的Zookeeper和Hbase安装及配置是一项关键任务,因为这两个组件在大数据处理中扮演着重要角色。Hadoop生态系统中的HBase是一个分布式数据库,它建立在Hadoop集群的HDFS(Hadoop ...

    hbase 权限配置.docx

    例如,在 hbase-site.xml 文件中增加以下配置项: ```xml &lt;name&gt;hbase.security.authentication &lt;value&gt;simple &lt;name&gt;hbase.security.authorization &lt;value&gt;true &lt;name&gt;hbase.coprocessor.master.classes...

    05.02深入HBase1

    描述中提到,HBase的所有数据文件都是存储在Hadoop的HDFS文件系统上,主要涉及两种文件类型:HFile和HLog File。HFile是HBase中用于存储KeyValue数据的二进制格式文件,StoreFile则是HFile的轻量级包装,用于实际的...

    大数据技术基础实验报告-HBase安装配置和应用实践.doc

    【大数据技术基础实验报告-HBase安装配置和应用实践】 这篇实验报告主要涵盖了HBase的安装、配置以及基本应用,这是大数据技术中一个重要的组件,它是一个分布式的、面向列的数据库,尤其适合处理大规模的数据。 1...

Global site tag (gtag.js) - Google Analytics