1.HDFS的回收站
默认回收站是关闭的,可以通过在core-site.xml中添加fs.trash.interval来打开幵配置时间阀值,例如:

fs.trash.interval
1440

本质:删除数据的时候,实际是一个ctrl+x操作
删除文件时,其实是放入回收站/trash
回收站里的文件可以快速恢复
可以设置一个时间阈值,当回收站里文件的存放时间超过返个阈值,就被彻底删除,并且释放占用的数据块
查看回收站
hdfs dfs -lsr /user/root/.Trash/Current
从回收站中恢复
hdfs dfs -cp /user/root/.Trash/Current/input/data.txt /input
hdfs dfs -cp /user/root/.Trash/Current/folder2 /folder2
清空:hdfs dfs -expunge
2.HDFS的快照
一个snapshot(快照)是一个全部文件系统、或者某个目录在某一时刻的镜像
快照应用在以下场景中:
防止用户的错误操作
备份
试验/测试
灾难恢复
HDFS的快照操作
)默认:HDFS的快照是禁用的
)第一步:管理员开启某个目录的快照功能
1.开启快照
管理命令:
[-allowSnapshot ]
[-disallowSnapshot ]
开启目录快照功能
hdfs dfsadmin -allowSnapshot /mydir1

第二步:使用HDFS的操作命令,创建快照
[-createSnapshot []]
[-deleteSnapshot ]
[-renameSnapshot ]
hdfs dfs -createSnapshot /mydir1 mydir1_backup_01
日志:Created snapshot /mydir1/.snapshot/mydir1_backup_01
本质:将数据拷贝一份到当前目录的一个隐藏目录下–本质就是cp命令

(*)继续试验
hdfs dfs -put student02.txt /mydir1
hdfs dfs -createSnapshot /mydir1 mydir1_backup_02
对比快照: hdfs snapshotDiff /mydir1 mydir1_backup_01 mydir1_backup_02
Difference between snapshot mydir1_backup_01 and snapshot mydir1_backup_02 under directory /mydir1:
M . —M方法
+ ./student02.txt (+是代表多了一个文件,-是代表少了一个文件)
M文件或者目录被修改了,R代表文件或者目录被重命名。
开启快照 为目录开启快照功能
hdfs dfsadmin -allowSnapshot /input
创建快照
hdfs dfs -createSnapshot /input backup_input_01
查看快照
hdfs lsSnapshottableDir

对比快照
hdfs snapshotDiff /input backup_input_01 backup_input_02

恢复快照

hdfs dfs -cp /input/.snapshot/backup_input_01/data.txt /input

禁用快照

Hdfs dfsadmin -disallowSnapshot /mydir1

如果执行的禁用快照命令的目录下存在快照,那么命令会执行失败。

Hdfs dfsadmin -disallowSnapshot /mydir1—执行失败

在使用快照命令时,HDFS上相对应的目录下不能存在快照,可以先删除 HDFS的快照,然后再执行禁用快照。

3.HDFS的安全模式

什么时候安全模式?

安全模式是hadoop的一种保护机制,用于保证集群中的数据块的安全性。如果HDFS处于安全模式,则表示HDFS是只读状态。

当集群启动的时候,会首先进入安全模式。当系统处于安全模式时会检查数据块的完整性。假设我们设置的副本数(即参数dfs.replication)是5,那么在datanode上就应该有5个副本存在,假设只存在3个副本,那么比例就是3/5=0.6。在配置文件hdfs-default.xml中定义了一个最小的副本的副本率0.999,如图:

hdfs 直接删除不进回收站 hadoop清空回收站_hdfs


我们的副本率0.6明显小于0.99,因此系统会自动的复制副本到其他的dataNode,使得副本率不小于0.999.如果系统中有8个副本,超过我们设定的5个副本,那么系统也会删除多余的3个副本。

在命令行下是可以控制安全模式的进入、退出和查看的。

命令 hdfs dfsadmin -safemode get 查看安全模式状态

命令 hdfs dfsadmin -safemode enter 进入安全模式状态

命令 hdfs dfsadmin -safemode leave 离开安全模式

命令: hdfs dfsadmin -safemode get|wait|leave|enter

作用:检查数据块的副本率,如果副本率不满足要求,就会进行水平复制,安全模式为了你副本率满足要求。

4.HDFS的配额管理

什么是配额?

配额就是HDFS为每个目录分配的大小空间,新建立的目录是没有配额的,最大的配额是Long.Max_Value。配额为1可以强制目录保持为空。

配额的类型

名称配额

用于设置该目录中能够存放的最多文件(目录)个数。

空间配额

用于设置该目录中最大能够存放的文件大小。

配额的应用案例

设置名称配额:规定某个目录下,存放文件(目录)的个数, 实际的个数:N-1个

命令:dfsadmin -setQuota …

dfsadmin -clrQuota …

示例:设置/input目录的名称配额为3

hdfs dfsadmin -setQuota 3 /input

清除/input目录的名称配额

hdfs dfsadmin -clrQuota /input

设置空间配额:规定某个目录下,文件的大小
命令:dfsadmin -setSpaceQuota …
dfsadmin -clrSpaceQuota …
示例:
设置该目录的空间配额是:10M
hdfs dfsadmin -setSpaceQuota 10M /quota2
清除quota2目录的空间配额
hdfs dfsadmin -clrSpaceQuota /quota2
hdfs dfs -mkdir /quota2
设置该目录的空间配额是:10M
hdfs dfsadmin -setSpaceQuota 10M /quota2
正确的做法:hdfs dfsadmin -setSpaceQuota 130M /quota2
放一个小于10M的文件,会出错
Causeby: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.protocol.DSQuotaExceededException): The DiskSpace quota of /quota2 is exceeded: quota = 10485760 B = 10 MB but diskspace consumed = 134217728 B = 128 MB
注意:尽管数据不到128M,但是占用的数据块依然是128M.
切记:当设置空间配额的时候,这个值不能小于128M.
注意:如果hdfs文件系统中的文件个数或者大小超过了配额限制,会出现错误。