九、HDFS安全模式,快照,回收站,配额管理的用法

一、安全模式

hdfs最开始开始开启集群的时候,会处于安全模式下,此时内部正检查集群中的副本率是否满足配置文件中所配置的副本率
1、如果不满足就需通过节点间的复制满足副本率后才会退出安全模式。
2、如果大于所配置的副本率,就会通过删除多于副本来降低副本率

检查安全模式的情况:

hdfs dfsadmin -safemode get|enter|leave|wait

注意:
处于安全模式下时,无法对hdfs中的文件进行写,修改操作,只能进行读操作。

1、最小副本条件的设置

dfs.replication.min,   默认是1

二、快照

这是对hdfs中某个目录做的一个备份。默认情况下,每个目录的快照功能是关闭的,所以如果要给该目录创建快照,就得给该目录开启快照功能。
开启快照:

hdfs dfsadmin -allowSnapshot <snapshotDir>

关闭快照:

hdfs dfsadmin -disallowSnapshot <snapshotDir>

显示所有能创建快照的目录:

hdfs lsSnapshottableDir

比较两个快照不同的地方:

//比较一个目录的两个快照的不同
hdfs snapshotDiff 快照目录 快照1 快照2

//比较目录和快照的不同,中间那个“.”表示当前目录,不可省略
hdfs snapshotDiff 快照目录  .  快照1

创建快照:

//快照的目录   快照的名称(可选)
hdfs dfs -createSnapshot <snapshotDir> [<snapshotName>]

创建的快照状态会存储在所创建快照的目录下的 .snapshot/<snapshotName>/ 这个目录下

删除快照:

//快照的目录   快照的名称(必须要有,因为一个目录可能有多个快照)
hdfs dfs -deleteSnapshot <snapshotDir> <snapshotName>

重命名快照:

//快照的目录   快照的名称(必须要有,因为一个目录可能有多个快照)
hdfs dfs -renameSnapshot <snapshotDir> <oldsnapshotName> <newsnapshotName>

从快照中恢复内容:

可以直接从 <snapshotDir>/.snapshot/<snapshotName>/ 中查看到所有的文件以及目录,需要哪个文件就拷贝哪个文件。

snapshotDir为创建了快照的目录

三、hdfs回收站

回收站默认是关闭的,需要在配置文件中设置开启

1、开启回收站

修改core-site.xml,然后重启hdfs

<!--设置被删除文件在回收站的存活时间,单位为分钟,如果为0,表示关闭回收站 -->
<property>
    <name>fs.trash.interval</name>
    <value>2</value>
</property>

<!--设置回收站检查时间间隔,如果回收站中文件存活时间到期就从回收站删除,单位是分钟 -->
<property>
    <name>fs.trash.checkpoint.interval</name>
    <value>1</value>
</property>

2、查看回收站

开启回收站之后,当我们删除hdfs的文件时,删除的文件会移动到 hdfs的/user/USERNAME/.trash/Current/ 下,其中USERNAME是当前操作hdfs 的有用户名。所以实际上就是剪切操作。
注意:
通过程序删除的文件不会移动到回收站中,需要显式将文件移动到回收站。如果是通过命令行的是会移动到回收站的。

3、通过程序将文件移动到回收站

//创建回收站对象
Trash tsh = new Trash(conf);
Path path = new Path(pathString);
//将指定文件移动到回收站
tsh.moveToTrash(path);

4、清空回收站

hdfs dfs -expunge

5、从回收站恢复文件

直接从回收站的路径剪切到指定路径下即可

四、配额

//名称配额,简单说就是该目录下文件和目录的总个数的限制
hdfs dfsadmin -setQuota N HDFS目录1 HDFS目录2.....  设置名称配额
hdfs dfsadmin -clrQuota HDFS目录1 HDFS目录2.....    取消名称配额

//空间配额,简单说就是该目录的存储空间限制
hdfs dfsadmin -setSpaceQuota N单位(如:1GB) [-storageType <storagetype>] HDFS目录1 HDFS目录2..... 设置空间配额
hdfs dfsadmin -clrSpaceQuota [-storageType <storagetype>] HDFS目录1 HDFS目录2..... 取消空间配额

其中 storageType 有以下类型:
RAW-DISK:原始物理磁盘
DISK:    分区空间
SSD:     固态硬盘
ARCHIVE:  

猜你喜欢

转载自blog.51cto.com/kinglab/2442822