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分配调度计算与优化


本文主要介绍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用户执行stop-dfs.sh命令。

1、关闭HDFS集群

[alanchan@server1 ~]$ jps
15154 QuorumPeerMain
32722 Jps
19075 NameNode
20780 DFSZKFailoverController
28893 ResourceManager
[alanchan@server1 ~]$ stop-dfs.sh
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、修改core-site.xml文件

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

3、同步集群配置文件

scp -r /usr/local/bigdata/hadoop-3.1.4/etc/hadoop/core-site.xml server2:/usr/local/bigdata/hadoop-3.1.4/etc/hadoop
scp -r /usr/local/bigdata/hadoop-3.1.4/etc/hadoop/core-site.xml server3:/usr/local/bigdata/hadoop-3.1.4/etc/hadoop
scp -r /usr/local/bigdata/hadoop-3.1.4/etc/hadoop/core-site.xml server4:/usr/local/bigdata/hadoop-3.1.4/etc/hadoop

4、启动HDFS集群

[alanchan@server1 ~]$ start-dfs.sh
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/temp.txt
drwxr-xr-x   - alanchan supergroup          0 2022-09-09 17:01 /test/test2

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

#文件已经删除
[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/temp.txt

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

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/user.sql
#删除文件
[alanchan@server1 ~]$ hadoop fs -rm -skipTrash /test/user.sql
Deleted /test/user.sql
[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

除了fs.trash.interval参数控制到期自动删除之外,用户还可以通过命令手动清空回收站,释放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 fs.TrashPolicyDefault: TrashPolicyDefault#deleteCheckpoint for trashRoot: hdfs://HadoopHAcluster/user/alanchan/.Trash
2022-09-13 09:28:30,888 INFO fs.TrashPolicyDefault: TrashPolicyDefault#deleteCheckpoint for trashRoot: hdfs://HadoopHAcluster/user/alanchan/.Trash
2022-09-13 09:28:30,896 INFO fs.TrashPolicyDefault: TrashPolicyDefault#createCheckpoint for trashRoot: hdfs://HadoopHAcluster/user/alanchan/.Trash
2022-09-13 09:28:30,940 INFO fs.TrashPolicyDefault: Created trash checkpoint: /user/alanchan/.Trash/220913092830

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