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
两者都有自己的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 thre