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

时间:2024-10-19 12:41:52

Hadoop系列文章目录

1、hadoop3.1.4简单介绍及部署、简单验证
2、HDFS操作 - shell客户端
3、HDFS的使用(读写、上传、下载、遍历、查找文件、整个目录拷贝、只拷贝文件、列出文件夹下文件、删除文件及目录、获取文件及文件夹属性等)-java
4、HDFS-java操作类HDFSUtil及junit测试(HDFS的常见操作以及HA环境的配置)
5、HDFS API的RESTful风格–WebHDFS
6、HDFS的HttpFS-代理服务
7、大数据中常见的文件存储格式以及hadoop中支持的压缩算法
8、HDFS内存存储策略支持和“冷热温”存储
9、hadoop高可用HA集群部署及三种方式验证
10、HDFS小文件解决方案–Archive
11、hadoop环境下的Sequence File的读写与合并
12、HDFS Trash垃圾桶回收介绍与示例
13、HDFS Snapshot快照
14、HDFS 透明加密KMS
15、MapReduce介绍及wordcount
16、MapReduce的基本用法示例-自定义序列化、排序、分区、分组和topN
17、MapReduce的分区Partition介绍
18、MapReduce的计数器与通过MapReduce读取/写入数据库示例
19、Join操作map side join 和 reduce side join
20、MapReduce 工作流介绍
21、MapReduce读写SequenceFile、MapFile、ORCFile和ParquetFile文件
22、MapReduce使用Gzip压缩、Snappy压缩和Lzo压缩算法写文件和读取相应的文件
23、hadoop集群中yarn运行mapreduce的内存、CPU分配调度计算与优化


文章目录

  • Hadoop系列文章目录
  • 一、介绍
  • 二、HDFS Trash功能开启
    • 1、关闭HDFS集群
    • 2、修改文件
    • 3、同步集群配置文件
      • 4、启动HDFS集群
  • 三、HDFS Trash功能验证
    • 1、删除文件并验证
    • 2、不进回收站的删除
    • 3、从Trash中恢复文件
    • 4、清空Trash


本文主要介绍HDFS Trash垃圾桶回收。
前提依赖:hadoop可以正常使用。
本文分为三部分,即介绍、配置以及验证。

一、介绍

  • 默认情况下,HDFS中Trash是没有开启的,删除操作的数据将会被直接删除
  • 启用Trash功能后,从HDFS中删除某些内容时,文件或目录不会立即被清除,它们将被移动到回收站Current目录中(/user/${username}/.Trash/current)
  • .Trash中的文件在用户可配置的时间延迟后被永久删除
  • 可以简单地将回收站里的文件移动到.Trash目录之外的位置来恢复回收站中的文件和目录
  • Trash Checkpoint仅仅是用户回收站下的一个目录,用于存储在创建检查点之前删除的所有文件或目录
  • Trash Checkpoint目录在/user/${username}/.Trash/{timestamp_of_checkpoint_creation}
  • 最近删除的文件被移动到回收站Current目录,并且在可配置的时间间隔内,HDFS会为在Current回收站
  • 目录下的文件创建检查点/user/${username}/.Trash/<日期>,并在过期时删除旧的检查点

二、HDFS Trash功能开启

按照以下步骤进行操作,在server1上alanchan用户执行命令。

1、关闭HDFS集群

[alanchan@server1 ~]$ jps
15154 QuorumPeerMain
32722 Jps
19075 NameNode
20780 DFSZKFailoverController
28893 ResourceManager
[alanchan@server1 ~]$ 
Stopping namenodes on [server1 server2]
Stopping datanodes
Stopping journal nodes [server4 server3 server2]
Stopping ZK Failover Controllers on NN hosts [server1 server2]
[alanchan@server1 ~]$ jps
15154 QuorumPeerMain
28893 ResourceManager
1679 Jps

2、修改文件

<!-- 增加垃圾桶机制 单位是分钟 -->
	<property>    
		<name></name>    
		<value>1440</value>
	</property>
	<property>    
		<name></name>    
		<value>0</value>
	</property>
#:回收站中的文件多少分钟后会被系统永久删除。如果为零,Trash功能将被禁用。
#:前后两次检查点的创建时间间隔(单位也是分钟),新的检查点被创建后,随之旧的检查点就会被系统永久删除。如果为零,则将该值设置为的值

3、同步集群配置文件

scp -r /usr/local/bigdata/hadoop-3.1.4/etc/hadoop/ server2:/usr/local/bigdata/hadoop-3.1.4/etc/hadoop
scp -r /usr/local/bigdata/hadoop-3.1.4/etc/hadoop/ server3:/usr/local/bigdata/hadoop-3.1.4/etc/hadoop
scp -r /usr/local/bigdata/hadoop-3.1.4/etc/hadoop/ server4:/usr/local/bigdata/hadoop-3.1.4/etc/hadoop

4、启动HDFS集群

[alanchan@server1 ~]$ 
Starting namenodes on [server1 server2]
Starting datanodes
Starting journal nodes [server4 server3 server2]
Starting ZK Failover Controllers on NN hosts [server1 server2]
[alanchan@server1 ~]$ jps
16561 NameNode
15154 QuorumPeerMain
17187 DFSZKFailoverController
28893 ResourceManager
17519 Jps

至此已经完成了环境的配置,接下来将进行验证。

三、HDFS Trash功能验证

1、删除文件并验证

开启Trash功能后,正常执行删除操作,文件实际并不会被直接删除,而是被移动到了垃圾回收站

[alanchan@server1 ~]$ hadoop fs -ls /test
Found 3 items
drwxr-xr-x   - alanchan supergroup          0 2022-09-09 11:32 /test/data_o
-rw-r--r--   3 alanchan supergroup       8728 2022-09-13 09:19 /test/
drwxr-xr-x   - alanchan supergroup          0 2022-09-09 17:01 /test/test2

#文件已经移动到垃圾桶中
[alanchan@server1 ~]$ hadoop fs -rm /test/
2022-09-13 09:20:14,311 INFO : Moved: 'hdfs://HadoopHAcluster/test/' to trash at: hdfs://HadoopHAcluster/user/alanchan/.Trash/Current/test/

#文件已经删除
[alanchan@server1 ~]$ hadoop fs -ls /test
Found 2 items
drwxr-xr-x   - alanchan supergroup          0 2022-09-09 11:32 /test/data_o
drwxr-xr-x   - alanchan supergroup          0 2022-09-09 17:01 /test/test2

#在垃圾桶内查看该文件
[alanchan@server1 ~]$ hadoop fs -ls /user/alanchan/.Trash/Current/test
Found 1 items
-rw-r--r--   3 alanchan supergroup       8728 2022-09-13 09:19 /user/alanchan/.Trash/Current/test/

在这里插入图片描述

2、不进回收站的删除

希望直接把文件删除,不需要再经过Trash回收站了

可以在执行删除操作的时候添加一个参数:-skipTrash.

[alanchan@server1 ~]$ hadoop fs -ls /test
Found 3 items
drwxr-xr-x   - alanchan supergroup          0 2022-09-09 11:32 /test/data_o
drwxr-xr-x   - alanchan supergroup          0 2022-09-09 17:01 /test/test2
-rw-r--r--   3 alanchan supergroup       1408 2022-09-13 09:24 /test/
#删除文件
[alanchan@server1 ~]$ hadoop fs -rm -skipTrash /test/
Deleted /test/
[alanchan@server1 ~]$ hadoop fs -ls /test
Found 2 items
drwxr-xr-x   - alanchan supergroup          0 2022-09-09 11:32 /test/data_o
drwxr-xr-x   - alanchan supergroup          0 2022-09-09 17:01 /test/test2

3、从Trash中恢复文件

回收站里面的文件,在到期被自动删除之前,都可以通过命令恢复出来

使用mv、cp命令把数据文件从Trash目录下复制移动出来就可以了

4、清空Trash

除了参数控制到期自动删除之外,用户还可以通过命令手动清空回收站,释放HDFS磁盘存储空间

删除整个回收站目录,将会清空回收站

HDFS提供了一个命令行工具来完成这个工作:hadoop fs -expunge。该命令立即从文件系统中删除过期的检查点

[alanchan@server1 ~]$ hadoop fs -ls /user
Found 1 items
drwx------   - alanchan supergroup          0 2022-09-13 09:20 /user/alanchan
[alanchan@server1 ~]$ hadoop fs -expunge /user
2022-09-13 09:28:30,888 INFO : TrashPolicyDefault#deleteCheckpoint for trashRoot: hdfs://HadoopHAcluster/user/alanchan/.Trash
2022-09-13 09:28:30,888 INFO : TrashPolicyDefault#deleteCheckpoint for trashRoot: hdfs://HadoopHAcluster/user/alanchan/.Trash
2022-09-13 09:28:30,896 INFO : TrashPolicyDefault#createCheckpoint for trashRoot: hdfs://HadoopHAcluster/user/alanchan/.Trash
2022-09-13 09:28:30,940 INFO : Created trash checkpoint: /user/alanchan/.Trash/220913092830

以上,完成了回收站的介绍、配置以及验证。