在验证确认HDFS快照目录是否会存在open for write文件时,简单了解下HDFS快照,小记一下这个过程吧。
快照操作
对指定目录启用快照功能
[root@cm111 ~]# hdfs dfsadmin -allowSnapshot /htdata
Allowing snapshot on /htdata succeeded
同理也有禁用功能
hdfs dfsadmin -disallowSnapshot /htdata
创建快照
[root@cm111 ~]# hdfs dfs -createSnapshot /htdata/
Created snapshot /htdata/.snapshot/s20230711-094017.764
当然这里也可以指定快照名称
hdfs dfs -createSnapshot /htdata/ snapshot_name
删除快照
hdfs dfs -deleteSnapshot /htdata s20230711-094017.764
列出快照
hdfs lsSnapshottableDir
查看指定路径有无open for write文件
hdfs fsck /htdata/.snapshot/s20230711-094017.764 -openforwrite
而验证路径是否有open for write文件也很简单
验证步骤:
1、创建快照
hdfs dfsadmin -allowSnapshot /htdata
hdfs dfs -createSnapshot /htdata/ 自动生成的快照目录是:/htdata/.snapshot/s20230711-094017.764
2、将4G文件上传至/htdata
使用命令分别检查 /htdata/ 以及 /htdata/.snapshot/s20230711-094017.764 路径
hdfs fsck /htdata/ -openforwrite
hdfs fsck /htdata/.snapshot/s20230711-094017.764 -openforwrite
只有检查/htdata/出现了openwrite记录,快照目录并没有openwrite记录
/htdata/testa/teacher_baseinfo.txt._COPYING_ 805306368 bytes, replicated: replication=3, 6 block(s), OPENFORWRITE
3、将文件上传至/htdata/.snapshot/s20230711-094017.764(快照目录只能有读取权限,不能有写入相关操作)
put: Modification on a read-only snapshot is disallowed
4、总结以上记录对于生成的快照目录/htdata/.snapshot/s20230711-094017.764是不可能存在openforwrite文件的