hadoop 2.6.0 hadoop 对Namenode image文件和Edit文件进行清理的NNStorageRetentionManager源代码分析
来源:互联网 发布:淘宝网帽子冬季 编辑:程序博客网 时间:2024/06/06 00:36
NNStorageRetentionManager对文件进行定期旋转删除。
NNStorageRetentionManager的构造方法如下:
public NNStorageRetentionManager(Configuration conf, NNStorage storage, LogsPurgeable purgeableLogs) { this(conf, storage, purgeableLogs, new DeletionStoragePurger()); }
构造NNStorageRetentionManager对象的时候,生成一个DeletionStoragePurger对象,此对象有purgeImage(FSImageFile)来清理Image文件,purgeLog(EditLogFile)来清理EditLog文件,在deleteOrWarn方法里,如果删除不成功,会打印一个警告日志,代码如下:
static class DeletionStoragePurger implements StoragePurger { @Override public void purgeLog(EditLogFile log) { LOG.info("Purging old edit log " + log); deleteOrWarn(log.getFile()); } @Override public void purgeImage(FSImageFile image) { LOG.info("Purging old image " + image); deleteOrWarn(image.getFile()); deleteOrWarn(MD5FileUtils.getDigestFileForFile(image.getFile())); } private static void deleteOrWarn(File file) { if (!file.delete()) { // It's OK if we fail to delete something -- we'll catch it // next time we swing through this directory. LOG.warn("Could not delete " + file); } } }DeletionStoragePurger实现了StoragePurger方法,
static interface StoragePurger { void purgeLog(EditLogFile log); void purgeImage(FSImageFile image); }
NNStorageRetentionManager的构造方法又调用了以下构造方法:
public NNStorageRetentionManager( Configuration conf, NNStorage storage, LogsPurgeable purgeableLogs, StoragePurger purger) { this.numCheckpointsToRetain = conf.getInt( DFSConfigKeys.DFS_NAMENODE_NUM_CHECKPOINTS_RETAINED_KEY, DFSConfigKeys.DFS_NAMENODE_NUM_CHECKPOINTS_RETAINED_DEFAULT); this.numExtraEditsToRetain = conf.getLong( DFSConfigKeys.DFS_NAMENODE_NUM_EXTRA_EDITS_RETAINED_KEY, DFSConfigKeys.DFS_NAMENODE_NUM_EXTRA_EDITS_RETAINED_DEFAULT); this.maxExtraEditsSegmentsToRetain = conf.getInt( DFSConfigKeys.DFS_NAMENODE_MAX_EXTRA_EDITS_SEGMENTS_RETAINED_KEY, DFSConfigKeys.DFS_NAMENODE_MAX_EXTRA_EDITS_SEGMENTS_RETAINED_DEFAULT); Preconditions.checkArgument(numCheckpointsToRetain > 0, "Must retain at least one checkpoint"); Preconditions.checkArgument(numExtraEditsToRetain >= 0, DFSConfigKeys.DFS_NAMENODE_NUM_EXTRA_EDITS_RETAINED_KEY + " must not be negative"); this.storage = storage; this.purgeableLogs = purgeableLogs; this.purger = purger; }
在每次调用saveFSImageInAllDirs的时候,就会调用一次purgeOldStorage()方法。
0 0
- hadoop 2.6.0 hadoop 对Namenode image文件和Edit文件进行清理的NNStorageRetentionManager源代码分析
- hadoop中namenode中的edit.log文件查看
- Hadoop源码分析之读文件时NameNode和DataNode的处理过程
- Hadoop源码分析之读文件时NameNode和DataNode的处理过程 选取datanode详解
- 对DataNode和namenode的理解--hadoop
- Hadoop NameNode的元数据持久化存储FSImage和日志存储EditLog源代码分析
- HDFS的API对Hadoop文件系统的文件进行写入
- Hadoop - HDFS API 对文件进行操作
- 对Hadoop /bin 下的启动文件详细分析
- Hadoop:NameNode和Secondary NameNode
- Hadoop进行读写文件
- Hadoop源码分析之NameNode的格式化
- hadoop 0.1.0版本namenode代码分析
- hadoop SecondaryNameNode和NameNode
- hadoop SecondaryNameNode和NameNode
- hadoop SecondaryNameNode和NameNode
- Hadoop 写SequenceFile文件 源代码
- hadoop文件结构分析
- MongoDB的安装
- tmux使用
- IOS http请求的get 和 post的请求的区别
- iOS DES+Base64 加密、解密
- i2c 协议解析
- hadoop 2.6.0 hadoop 对Namenode image文件和Edit文件进行清理的NNStorageRetentionManager源代码分析
- Python基础教程笔记——条件,循环和其他语句
- Structs2 或SSH项目action中获取post方法发送的JSON数据
- java获取工作日
- HDU 1560 DNA sequence(BFS+hash)
- 网络数据包收发流程(三):e1000网卡和DMA
- Andorid——Create or ParserXml(Pull Dom)
- git diff 比较两个版本的差异
- MySQL硬件资源利用特点