`
david.org
  • 浏览: 157228 次
  • 性别: 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 fs命令详解.docx

    Hadoop fs命令是Hadoop分布式文件系统(HDFS)的命令行接口,提供了丰富的文件操作命令,方便用户管理和维护HDFS文件系统。本文将详细介绍Hadoop fs命令的使用方法和实践操作。 基本命令 hadoop fs命令的基本语法...

    Hadoop回收站trash-恢复删除的文件

    当需要清理回收站时,可以使用`Hadoop fs -rmr .Trash`命令,这将删除所有位于`.Trash`目录中的内容,释放磁盘空间。 ### 小结 Hadoop的回收站(Trash)机制是一项非常实用的功能,它允许管理员和用户在误删除...

    hadoop HDFS增删改

    - 描述:定义文件被删除后放入用户目录下的 `.Trash` 目录的保留时间(以分钟计),默认为 0,表示禁用。 - 推荐设置:1440(一天)。 - 示例:`fs.trash.interval=1440` 5. **I/O 缓冲区大小** (`io.file....

    12、HDFS Trash垃圾桶回收介绍与示例

    例如,将`fs.trash.interval`设置为1440分钟(24小时)意味着文件将在24小时后被删除,`fs.trash.checkpoint.interval`设置为0表示不自动创建检查点,系统将使用`fs.trash.interval`的值作为检查点间隔。 【HDFS ...

    基于Hadoop0.21版本的HDFS功能修改.zip

    1. **Trash机制**:Hadoop 0.21引入了垃圾回收机制,允许用户在误删除文件后有一定的恢复时间窗口,增加了系统的友好性和安全性。 2. **副本放置策略**:0.21版本提供了更灵活的副本放置策略,可以依据网络拓扑或...

    hadoop基本操作.docx

    文件删除使用`hdfs dfs -rm`,默认情况下,删除的文件会被移动到`.Trash`目录,如`hdfs dfs -rm shuxu_HDFS`。 6. **创建新目录**: 使用`hdfs dfs -mkdir`命令,例如`hdfs dfs -mkdir /user/ua07/dir_shuxu`。 ...

    hadoop的默认配置文件

    - `fs.defaultFS`:定义了HDFS的默认命名空间URI,这是客户端连接HDFS的入口点。 - `dfs.replication`:设定副本因子,即每个数据块在集群中保存的副本数量,默认为3,以保证容错性。 - `dfs.blocksize`:设定数据块...

    hadoop 分布式集群搭建

    - 接下来,需要进行集群的格式化操作,这通常涉及到使用Hadoop的格式化命令,格式化HDFS文件系统以存储数据。 - 配置和启动Hadoop集群的过程中,需要启动NameNode和DataNode,以及YARN的ResourceManager和...

    hadoop配置文件默认配置

    本文将深入解析Hadoop的常用配置,包括HDFS(Hadoop Distributed File System)和MapReduce的端口配置,以及一些核心的默认配置参数。 首先,让我们关注HDFS的端口配置: 1. **fs.default.name**: 这个参数定义了...

    HDFS实验手册.pdf

    - **fs.trash.interval**: 定义了HDFS Trash(回收站)的清理周期(单位为分钟)。默认值通常设置为360分钟。 - **hadoop.security.authentication**: 指定Hadoop的安全认证机制,默认为`simple`,表示使用简单的...

    Ubuntu_Hadoop部署笔记

    ### Ubuntu_Hadoop部署笔记 #### 一、Jdk安装与配置 为了确保Hadoop能够正常运行,首先需要在Ubuntu系统上安装Java Development Kit (JDK)。本例中选择安装OpenJDK 6。 **安装命令**: ``` sudo apt-get install ...

    HA模式部署hadoop1

    使用HDFS的`hadoop fs -mkdir`命令可以在HDFS上创建目录,例如`hadoop fs -mkdir /logs/2020-11-22`,这里的日期应替换为实际的日期。接下来,【将昨天的日志文件上传到刚创建的HDFS目录中】可以通过`hadoop fs -put...

    《Hadoop 数据分析平台》课程毕业测试题

    根据提供的《Hadoop 数据分析平台》课程毕业测试题的相关信息,我们可以提炼出一系列与Hadoop相关的知识点,这些知识点不仅能够帮助学生更好地理解Hadoop的工作原理和技术细节,还能够加深他们对大数据处理技术的...

    云计算基础课件—Hadoop:Google云计算的开源实现 dr.ppt

    6. **空间回收机制**:被删除的文件会先被移动到/trash目录,在这里可以随时恢复数据。 7. **元数据磁盘失效保护**:NameNode可以配置多个副本,以防止元数据丢失。 8. **快照支持**:虽然当前版本的HDFS还不支持...

    Hadoop默认的配置文件

    Hadoop的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce,它们各自都有自己的默认配置文件,这些配置文件是Hadoop运行时的重要组成部分。在你提到的压缩包文件中,我们能看到四个主要的默认配置...

    云计算基础课件-Hadoop:Google云计算的开源实现 .ppt

    - **空间回收**:文件删除后暂时存放在 `/trash` 目录中,便于恢复。 - **元数据备份**:支持 NameNode 元数据的备份。 - **快照**:尽管当前 HDFS 不支持快照,但这是一个重要的功能,允许回滚到先前的状态。 - ...

    HADOOP权威指南 第3版 PDF电子书下载 带目录书签 完整版

    7. **数据生命周期管理**:Hadoop提供了多种工具,如HDFS的 Trash机制、Hadoop Archive (HAR) 和SequenceFile,用于数据的保留、归档和清理。 8. **安全性与认证**:Kerberos、SSL/TLS加密、ACLs和Sentry等机制保障...

    HDFS可靠性策略

    HDFS(Hadoop Distributed File System)作为一种分布式文件系统,其高可靠性主要是由多种策略及机制共同作用实现的。下面我们来分析这些策略和机制,对分布式文件系统的高可靠性进行详细的解释。 文件完整性 – ...

Global site tag (gtag.js) - Google Analytics