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.
分享到:
相关推荐
hbase hfile v2 format draft 描述存储结构
批量执行hbase shell 命令 #!/bin/bash source /etc/profile exec $HBASE_HOME/bin/hbase shell <<EOF truncate 'tracker_total_apk_fact_zyt' major_compact('t_abc') disable 't_abc' drop 't_abc' create...
八、HBase HFile Cleaner 配置 * hbase.master.hfilecleaner.plugins:org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner,这个参数指定了清理 HFile 的程序。 九、HBase RegionServer 配置 * ...
提供的文档`hadoop_zookeeper_hbase集群配置.docx`应包含详细的步骤和配置示例,而`配置文件.rar`则可能包含了预设的配置模板,可以作为配置参考。在实际操作时,务必根据具体环境调整配置,确保所有节点之间的网络...
### 基于集群的HBase安装和配置 #### Zookeeper简介 Zookeeper作为Hadoop生态中的关键组件,主要用于提供高可用性和分布式协调服务。它能够有效地管理Hadoop集群中的各种资源和服务,例如Hadoop NameNode管理和...
在大数据存储领域,HBase作为一个分布式列式数据库,被广泛应用于处理海量结构化数据。...这份资料中的“HBase配置项说明及调优建议.xlsx”应该包含了详细的参数解释和实践案例,是学习和优化HBase不可或缺的参考资源。
HBase 和 ZooKeeper 配置详解 HBase 和 ZooKeeper 是两个非常重要的分布式系统组件,分别用于分布式数据库和分布式协调服务。今天,我们将详细介绍如何配置 HBase 和 ZooKeeper,以便更好地理解它们之间的交互。 ...
总结,HBase备份和数据恢复涉及到多种策略和工具,包括快照、HLog备份和HDFS数据备份。而HBase与Hive的互导以及与HDFS的互导则为大数据分析提供了灵活的数据流转路径。理解和掌握这些知识点对于管理和优化大数据环境...
HFile 是 Hbase 的存储文件格式,预先生成 HFile 后,可以将其直接加载到 Hbase 中。这是一种高效的入库方式,尤其是在大规模数据集的情况下。预先生成 HFile 入库的优点是快捷、可靠,缺点是需要提前生成 HFile,...
除了基本的配置和启动外,还可以进行更高级的操作,例如创建新的 HBase 表、删除表等。例如: - 创建表 `scores` 并添加列族 `grade`: ```shell create 'scores','grade' ``` - 删除表 `scores` 中的 `grade` ...
Hbase-Cleaner 按期间清理 Hbase 中的行 跑步: node cleaner.js 配置: { "hbase_host": "u.hbase.host", "hbase_port": "8080", "params": { "startTime": "1388534400000", "endTime": "1498535400000", ...
在将数据加载到HBase之前,通常会先将数据转换成HFile,以便于后续的高效写入和存储。 **MapReduce过程**: 1. **数据预处理**:首先,你需要准备要导入到HBase的数据,这些数据通常是以文本文件的形式存在。确保...
通过HbaseTemplate,我们可以执行常见的CRUD(创建、读取、更新和删除)操作以及更复杂的查询。 1. **HbaseTemplate的初始化**:在使用HbaseTemplate之前,我们需要在Spring配置文件中配置HBase的相关连接信息,如...
hbase 常用参数含义,默认值,调优建议(必须参数,split,compaction,blockcache,memstore flush,hlog,zookeeper,其他,等相参数名称、含义、默认值、调优建议)
在Linux环境下,构建基于Hadoop集群的Zookeeper和Hbase安装及配置是一项关键任务,因为这两个组件在大数据处理中扮演着重要角色。Hadoop生态系统中的HBase是一个分布式数据库,它建立在Hadoop集群的HDFS(Hadoop ...
例如,在 hbase-site.xml 文件中增加以下配置项: ```xml <name>hbase.security.authentication <value>simple <name>hbase.security.authorization <value>true <name>hbase.coprocessor.master.classes...
描述中提到,HBase的所有数据文件都是存储在Hadoop的HDFS文件系统上,主要涉及两种文件类型:HFile和HLog File。HFile是HBase中用于存储KeyValue数据的二进制格式文件,StoreFile则是HFile的轻量级包装,用于实际的...
【大数据技术基础实验报告-HBase安装配置和应用实践】 这篇实验报告主要涵盖了HBase的安装、配置以及基本应用,这是大数据技术中一个重要的组件,它是一个分布式的、面向列的数据库,尤其适合处理大规模的数据。 1...