一、HDFS回收站
HDFS在core-site.xml中进行配置后,会为每一个用户在“/user/用户名/.Trash/”地址创建一个回收站目录,每个被用户使用Shell命令行删除的文件或者目录,都会被移动到回收站目录中。但如果一直保存而不清空回收站目录的话,注定会出现问题,因此回收站中的数据都有一个生存周期,也就是当回收站中的文件或者目录在一段时间之内没有被用户恢复的话,HDFS就会自动的把这个文件或者目录彻底删除。
注意:默认情况下HDFS的回收站是没有开启的,需要通过修改core-site.xml配置文件来开启。配置文件中value的单位是分钟,1440分钟表示是一天的生存周期。
配置只需要在core-site.xml的</configuration>标签中添加如下配置:
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
配置完成后要重启HDFS服务。下面检验一下回收站开启后的效果:
[root@bigData01 hadoop-3.2.0]# hdfs dfs -ls /
Found 3 items
-rw-r--r-- 1 root supergroup 1361 2023-01-24 11:19 /readme.txt
drwxr-xr-x - root supergroup 0 2023-01-18 10:52 /test
-rw-r--r-- 3 123 supergroup 13 2023-01-18 23:10 /win11.txt
[root@bigData01 hadoop-3.2.0]# hdfs dfs -rm /readme.txt
2023-01-24 11:03:33,207 INFO fs.TrashPolicyDefault: Moved: 'hdfs://bigData01:9000/readme.txt' to trash at: hdfs://bigData01:9000/user/root/.Trash/Current/readme.txt
[root@bigData01 hadoop-3.2.0]# hdfs dfs -ls -R /
drwxr-xr-x - root supergroup 0 2023-01-18 10:52 /test
drwx------ - root supergroup 0 2023-01-24 11:03 /user
drwx------ - root supergroup 0 2023-01-24 11:03 /user/root
drwx------ - root supergroup 0 2023-01-24 11:03 /user/root/.Trash
drwx------ - root supergroup 0 2023-01-24 11:03 /user/root/.Trash/Current
-rw-r--r-- 1 root supergroup 1361 2023-01-24 11:03 /user/root/.Trash/Current/readme.txt
-rw-r--r-- 3 123 supergroup 13 2023-01-18 23:10 /win11.txt
在上述实践中可以很明显看到:开启回收站后删除readme.txt文件,会直接创建一个“/user/root/.Trash/Current”目录,并将readme.txt文件移动到该目录。要恢复文件的话也只需要像普通目录中移动文件的那样操作即可,如下:
[root@bigData01 hadoop-3.2.0]# hdfs dfs -mv /user/root/.Trash/Current/readme.txt /
[root@bigData01 hadoop-3.2.0]# hdfs dfs -ls /
Found 4 items
-rw-r--r-- 1 root supergroup 1361 2023-01-24 11:03 /readme.txt
drwxr-xr-x - root supergroup 0 2023-01-18 10:52 /test
drwx------ - root supergroup 0 2023-01-24 11:03 /user
-rw-r--r-- 3 123 supergroup 13 2023-01-18 23:10 /win11.txt
二、HDFS安全模式
安全模式是HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受删除、修改等变更请求,是一种保护机制,用于保证集群中的数据块的安全性。
集群每次重新启动的时候,HDFS都会检查集群中文件信息是否完整,例如副本是否缺少之类的信息,且DataNodes会向NameNode上传Block块信息。若在此时上传或者删除文件会报错:提示NameNode处于safe mode。遇到这种情况稍等片刻,等HDFS自检完毕,就会自动退出安全模式。也可以输入hdfs dfsadmin -safemode leave
命令退出安全模式。