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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
2、修改core-site.xml文件
<property>
<name>fs.trash.intervalname>
<value>1440value>
property>
<property>
<name>fs.trash.checkpoint.intervalname>
<value>0value>
property>
#fs.trash.interval:回收站中的文件多少分钟后会被系统永久删除。如果为零,Trash功能将被禁用。
#fs.trash.checkpoint.interval:前后两次检查点的创建时间间隔(单位也是分钟),新的检查点被创建后,随之旧的检查点就会被系统永久删除。如果为零,则将该值设置为fs.trash.interval的值
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
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
- 1
- 2
- 3
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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
至此已经完成了环境的配置,接下来将进行验证。
三、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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
以上,完成了回收站的介绍、配置以及验证。
评论记录:
回复评论: