第七章:小朱笔记hadoop之源码分析-hdfs分析
第四节:namenode分析
4.8 回收站机制
当用户写程序调用HDFS的API时,NameNode并不会把删除的文件或目录放入回收站Trash中。HDFS在客户端为用户提供了对文件系统的命令行操作,这个命令行操作是通过FsShell来实现的。当用户通过命令-rm/-rmr删除文件系统中的一个文件或者是目录的时候,HDFS并没有真正的删除这个文件或目录,而是把这个文件/目录移动到HDFS的系统回收站目录下。和Linux系统的回收站设计一样,HDFS会为每一个用户创建一个回收站目录:/user /用户名/.Trash/。这里就有一个问题了,经过长时间之后,删除的文件/目录占用了该文件系统大量的存储空间,而这些删除文件/目录确实已经真的对 用户来说没有任何用处。每一个被用户通过Shell删除的文件/目录,在系统回收站中都一个周期,也就是当系统回收站中的文件 /目录在一段时间之后没有被用户回复的话,HDFS就会自动的把这个文件/目录彻底删除,之后,用户就永远也找不回这个文件/目录了。在HDFS内部的具 体实现就是在NameNode中开启了一个后台线程Emptier,这个线程专门管理和监控系统回收站下面的所有文件/目录,对于已经超过生命周期的文件 /目录,这个线程就会自动的删除它们,不过这个管理的粒度很大。另外,用户也可以手动清空回收站,清空回收站的操作和删除普通的文件目录是一样的,只不过 HDFS会自动检测这个文件目录是不是回收站,如果是,HDFS当然不会再把它放入用户的回收站中了。
在HDFS中,用户的回收站用类org.apache.hadoop.fs.Trash来表示,这个类主要包含四个属性:
trash:用户的回收站目录(/user/用户名/.Trash);
current:存放被用户删除的文件/目录的路径(/user/用户名/.Trash/current);
interval:被用户删除的文件/目录在回收站中的生命期;
在默认的情况下,interval的 被Hadoop设置为0,即关闭了用户的回收站,所以我强烈的建议用户在读完本文之后赶紧在配置文件中设置fs.trash.interval的值(单位 是minute),同时这个设置只与客户端和NameNode节点都相关,但是在客户端设置这个值,只能说明是开启了用户的回收站功能,而不能决定删除的 文件/目录在回收站中的生命期,在NameNode节点设置这个值只能说是开启了自动清空所有用户回收站的功能。所以当某一个用户删除一个文件/目录 时,HDFS就把这个待删除的文件/目录移动到该用户对应的回收站目录/user/用户名/.Trash/current中。另外,如果用户的回收站中已 经存在了用户当前删除的文件/目录,则HDFS会将这个当前被删除的文件/目录重命名,命名规则很简单就是在这个被删除的文件/目录名后面紧跟一个编号 (从1开始知道没有重名为止)。
还有,NameNode是通过后台线程(org.apache.hadoop.fs.Trash.Emptier)来定时清空所有用户回收站中的文件/目 录的,它每隔interval分钟就清空一次用户回收站。具体的操作步骤是,先检查用户回收站目录/user/用户名/.Trash下的所有 yyMMddHHmm形式的目录,然后删除寿命超过interval的目录,最后将当前存放删除的文件/目录的回收站目录/user/用户名 /.Trash/current重命名为一个/user/用户名/.Trash/yyMMddHHmm。
相关推荐
Hadoop 分布式文件系统 (HDFS) 是 Hadoop 的核心组件之一,主要用于存储大量数据并支持这些数据的大规模处理。本文将根据提供的文档信息,深入探讨 HDFS 中涉及的增、删、改操作以及相关的配置参数。 #### 一、HDFS...
根据提供的《Hadoop 数据分析平台》课程毕业测试题的相关信息,我们可以提炼出一系列与Hadoop相关的知识点,这些知识点不仅能够帮助学生更好地理解Hadoop的工作原理和技术细节,还能够加深他们对大数据处理技术的...
在大数据处理领域,Hadoop是一个不可或缺的名字,尤其其分布式文件系统(HDFS)更是核心组件之一。Hadoop 0.21版本是Hadoop发展过程中的一个重要里程碑,它在HDFS上进行了一系列的功能改进和优化,为大数据处理提供...
### Ubuntu_Hadoop部署笔记 #### 一、Jdk安装与配置 为了确保Hadoop能够正常运行,首先需要在Ubuntu系统上安装Java Development Kit (JDK)。本例中选择安装OpenJDK 6。 **安装命令**: ``` sudo apt-get install ...
4. **格式化HDFS**:使用`hadoop namenode -format`命令格式化HDFS。 5. **启动Hadoop服务**:启动Hadoop集群。 #### HDFS使用 使用HDFS涉及到的基本命令包括: - `hadoop fs -put`:上传文件到HDFS。 - `hadoop fs...
### 云计算基础课件-Hadoop:Google云计算的开源实现 #### Hadoop简介 Hadoop是一个由Apache基金会维护的开源框架,旨在提供一个高效、可靠且可扩展的分布式计算环境。它能够利用大量的普通硬件(而非昂贵的专业...
7. **数据生命周期管理**:Hadoop提供了多种工具,如HDFS的 Trash机制、Hadoop Archive (HAR) 和SequenceFile,用于数据的保留、归档和清理。 8. **安全性与认证**:Kerberos、SSL/TLS加密、ACLs和Sentry等机制保障...
- **fs.trash.interval**: 定义了HDFS Trash(回收站)的清理周期(单位为分钟)。默认值通常设置为360分钟。 - **hadoop.security.authentication**: 指定Hadoop的安全认证机制,默认为`simple`,表示使用简单的...
还设置了HDFS文件的回收站功能(fs.trash.interval)以及检查点间隔时间(fs.trash.checkpoint.interval)。 - HDFS配置文件hdfs-site.xml:设置了HDFS的副本数量(dfs.replication),名称节点的数据目录(dfs....
7. **fs.hdfs.impl**: 定义HDFS文件系统的实现,通常是`org.apache.hadoop.hdfs.DistributedFileSystem`。 这些配置参数可以根据实际需求进行调整,以优化集群性能、提高安全性或者满足特定的存储和计算需求。在...
接下来是Hadoop的安装,同样涉及解压缩Hadoop的二进制发行版,并设置相应的环境变量HADOOP_HOME,将Hadoop的bin目录加入PATH,确保系统能够找到Hadoop的相关命令。同样需要执行命令刷新环境变量配置。 Hadoop的配置...
接下来,我们将详细探讨这四个默认配置文件——hdfs-default.xml、yarn-default.xml、core-default.xml和mapred-default.xml,以及它们所包含的关键知识点。 1. **hdfs-default.xml**:这是Hadoop分布式文件系统的...
HDFS(Hadoop Distributed File System)作为一种分布式文件系统,其高可靠性主要是由多种策略及机制共同作用实现的。下面我们来分析这些策略和机制,对分布式文件系统的高可靠性进行详细的解释。 文件完整性 – ...
Hadoop的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce,它们各自都有自己的默认配置文件,这些配置文件是Hadoop运行时的重要组成部分。在你提到的压缩包文件中,我们能看到四个主要的默认配置...
Trash回收站目录为/user/用户名/.Trash/,每一个被用户通过Shell删除的文件/目录,fs.trash.interval是指在这个回收周期之内,文件实际上是被移动到trash的这个目录下面,而不是马上把数据删除掉。等到回收周期真正...
【HA模式部署Hadoop】是高可用(High Availability)部署方式,它确保了Hadoop集群在主NameNode故障时能够无缝切换到备用NameNode,从而避免服务中断。在这个场景下,我们将讨论如何处理Hadoop日志管理和HDFS的高级...
7. 在Hadoop配置中,通过编辑hdfs-site.xml文件可以设置名称节点的相关参数,如要使用的名称节点。 8. dfs.data.dir属性用于指定数据节点上存放数据的目录,而不是元数据。 9. 修改NameNode的Web监控端口可以通过...
HDFS 的核心组件是 NameNode 和 DataNode,NameNode 负责管理文件系统的命名空间,而 DataNode 负责存储数据块。 MapReduce 是一种分布式计算模型,它可以对大量数据进行处理和分析。MapReduce 的核心组件是 Mapper...
分布式文件系统(HDFS,Hadoop Distributed File System)是大数据存储的核心组件之一,尤其在处理大规模数据时发挥着至关重要的作用。HDFS的设计旨在克服传统单机文件系统在存储海量数据时的局限性,通过在多台服务器...