`
david.org
  • 浏览: 155620 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HADOOP-HDFS 自动清除Trash以释放空间

阅读更多
HDFS should support Auto-Emptier to automatically expunge trash for releasing space.

HADOOP-HDFS需要有一个Auto-Emptier 线程来自动清除trash, 以释放HDFS的总使用空间, 该功能可以配置为可选项, 可以在Configuration下增加这两个参数以供配置.

1. fs.trash.autoemptier.interval  执行空间检查的时间时间隔, 设置为0时, 禁用该功能, 默认为20 Seconds.
2. fs.trash.max.percentused 当已使用空间率大于该值, 执行回收以释放空间. 默认为0.8f

这个功能只是个人的倾向而已, 并没有新建Feature到Apache, 欢迎同志们拍砖.

float percent = namenode.namesystem.getCapacityUsedPercent();
					if(percent < 1 && percent >= maxPercentUsed) {
						Path path = new Path(fs.getHomeDirectory(), TRASH);
						/*Trash trash = new Trash(path, conf);
						trash.expunge();
						trash.checkpoint();*/
						long space = 0;
						if (!fs.exists(path)
									|| (space = fs.getFileStatus(path).getLen()) == 0) {
								continue;
						}
						if(!fs.delete(path, true)){
							LOG.warn("Failed to expunge trash for releasing space.");
						} else {
						LOG.info("Auto-emptier, expunge trash for releasing space: " + FsShell.byteDesc(space));
}
					}


由于博客标题长度的限制, 标题里开头少写了HDFS字样. 源码见于附件.
分享到:
评论
3 楼 david.org 2010-03-02  
1. 在fsnamesystem未进入安全模式之前, 不应该执行del操作, 当然会抛出异常, 应该避免这种异常的发生.

2. fsnamesystem#getCapacityUsedPercent方法, 返回的值不准确, 已使用空间比率 = 总配置空间 / 已使用空间 + 剩余空间大小.

if (namenode.namesystem.getFSState().equals("Operational") && now >= end) {
					long used = namenode.namesystem.getCapacityUsed();
					long remaining = namenode.namesystem.getCapacityRemaining();
					long presentCapacity = used + remaining;
					String pc = FsShell.limitDecimalTo2(((1.0 * used) / presentCapacity) * 100);
					float percent = Float.valueOf(pc)/100f;
					
					LOG.info("Present dfs used: " + percent);
					
					if(percent < 1 && percent >= maxPercentUsed) {
						Path path = new Path(fs.getHomeDirectory(), TRASH);
						long space = 0;
						if (!fs.exists(path)
									|| (space = fs.getContentSummary(path).getLength()) == 0) {
								continue;
						}
						if(!fs.delete(path, true)) {
							LOG.warn("Failed to expunge trash for releasing space.");
						} else {
							LOG.info("Auto-emptier, expunge trash for releasing space: " + FsShell.byteDesc(space));
						}
					}
				}
2 楼 david.org 2010-02-20  
if (!fs.exists(path)
									|| (space = fs.getContentSummary(path).getLength()) == 0) {
								continue;
						}
1 楼 david.org 2010-02-20  
更改一下 bug
getFileStatus方法无法获取目录的空间大小, 需要使用
[url]if (!fs.exists(path)
|| (space = fs.getContentSummary(path).getLength()) == 0) {
continue;
}[/url]

相关推荐

    hadoop-hdfs-client-2.9.1-API文档-中文版.zip

    赠送jar包:hadoop-hdfs-client-2.9.1.jar 赠送原API文档:hadoop-hdfs-client-2.9.1-javadoc.jar 赠送源代码:hadoop-hdfs-client-2.9.1-sources.jar 包含翻译后的API文档:hadoop-hdfs-client-2.9.1-javadoc-...

    hadoop-hdfs-2.7.3-API文档-中英对照版.zip

    赠送jar包:hadoop-hdfs-2.7.3.jar; 赠送原API文档:hadoop-hdfs-2.7.3-javadoc.jar; 赠送源代码:hadoop-hdfs-2.7.3-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.7.3.pom; 包含翻译后的API文档:hadoop...

    hadoop-hdfs-client-2.9.1-API文档-中英对照版.zip

    赠送jar包:hadoop-hdfs-client-2.9.1.jar; 赠送原API文档:hadoop-hdfs-client-2.9.1-javadoc.jar; 赠送源代码:hadoop-hdfs-client-2.9.1-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-client-2.9.1.pom;...

    hadoop-hdfs-2.6.5-API文档-中文版.zip

    赠送jar包:hadoop-hdfs-2.6.5.jar; 赠送原API文档:hadoop-hdfs-2.6.5-javadoc.jar; 赠送源代码:hadoop-hdfs-2.6.5-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.6.5.pom; 包含翻译后的API文档:hadoop...

    hadoop-hdfs-2.7.3-API文档-中文版.zip

    赠送jar包:hadoop-hdfs-2.7.3.jar; 赠送原API文档:hadoop-hdfs-2.7.3-javadoc.jar; 赠送源代码:hadoop-hdfs-2.7.3-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.7.3.pom; 包含翻译后的API文档:hadoop...

    hadoop最新版本3.1.1全量jar包

    hadoop-auth-3.1.1.jar hadoop-hdfs-3.1.1.jar hadoop-mapreduce-client-hs-3.1.1.jar hadoop-yarn-client-3.1.1.jar hadoop-client-api-3.1.1.jar hadoop-hdfs-client-3.1.1.jar hadoop-mapreduce-client-jobclient...

    hadoop-hdfs-2.9.1-API文档-中文版.zip

    赠送jar包:hadoop-hdfs-2.9.1.jar 赠送原API文档:hadoop-hdfs-2.9.1-javadoc.jar 赠送源代码:hadoop-hdfs-2.9.1-sources.jar 包含翻译后的API文档:hadoop-hdfs-2.9.1-javadoc-API文档-中文(简体)版.zip 对应...

    hadoop-hdfs-2.5.1-API文档-中英对照版.zip

    赠送jar包:hadoop-hdfs-2.5.1.jar; 赠送原API文档:hadoop-hdfs-2.5.1-javadoc.jar; 赠送源代码:hadoop-hdfs-2.5.1-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.5.1.pom; 包含翻译后的API文档:hadoop...

    hadoop-hdfs-2.5.1-API文档-中文版.zip

    赠送jar包:hadoop-hdfs-2.5.1.jar; 赠送原API文档:hadoop-hdfs-2.5.1-javadoc.jar; 赠送源代码:hadoop-hdfs-2.5.1-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.5.1.pom; 包含翻译后的API文档:hadoop...

    hadoop-hdfs-2.4.1.jar

    hadoop-hdfs-2.4.1.jar

    hadoop-hdfs-2.6.5-API文档-中英对照版.zip

    赠送jar包:hadoop-hdfs-2.6.5.jar; 赠送原API文档:hadoop-hdfs-2.6.5-javadoc.jar; 赠送源代码:hadoop-hdfs-2.6.5-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.6.5.pom; 包含翻译后的API文档:hadoop...

    hadoop-hdfs-2.9.1-API文档-中英对照版.zip

    赠送jar包:hadoop-hdfs-2.9.1.jar; 赠送原API文档:hadoop-hdfs-2.9.1-javadoc.jar; 赠送源代码:hadoop-hdfs-2.9.1-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.9.1.pom; 包含翻译后的API文档:hadoop...

    hadoop-hdfs-2.7.3

    hadoop-hdfs-2.7.3搭建flume1.7需要用到的包,还有几个包也有提供

    hadoop-hdfs-2.2.0.jar

    hadoop-hdfs-2.2.0.jar 点击下载资源即表示您确认该资源不违反资源分享的使用条款

    hadoop-hdfs-2.7.7.jar

    flume 想要将数据输出到hdfs,必须要有hadoop相关jar包。本资源是hadoop 2.7.7版本

    hadoop-hdfs-2.7.2.jar

    有时候需要查看修改或者回复hdfs的默认配置,在这个jar包里面,可以把hadoop-default.xml拿出来

    hadoop-client-2.6.5.jar

    hadoop-client-2.6.5.jar

    hadoop-hdfs-test-0.21.0.jar

    hadoop-hdfs-test-0.21.0.jar

    hadoop-hdfs.pdf

    亲手整理的hdfs面试题,不是从网上粘贴的,仅此一份。

    hadoop-hdfs-bkjournal-2.2.0.zip

    htmlunit-runner-freemarker.zip,runner将freemarker模板加载到htmlunit中。runner使用htmlunit maven插件执行freemarker模板。

Global site tag (gtag.js) - Google Analytics