这里写目录标题

  • 回收站
  • 快照
  • 开启关闭快照功能-针对目录
  • 创建快照
  • 查看快照、对比快照
  • 删除、修改、恢复快照
  • 配额
  • 名称配额-限制个数
  • 空间配额-限制大小
  • HDFS的安全模式
  • NameNode增强
  • NameNode联盟
  • HA(High Availability )- 高可用性


回收站

HDFS具有回收站的功能,该功能默认是关闭状态。我们可通过在core-site.xml中配置一个fs.trash.interval参数来开启,该参数的值为一个阈值,单位为分钟,存放时间超过该值的文件将从回收站删除。

<property>
		<name>fs.trash.interval</name>
		<value>1440</value>
	</property>

未启动前,删除数据的日志如下,可以看到是直接删除了文件。

hdfs 是否允许跳过回收站 hdfs回收站路径_HDFS


启动回收站功能后,删除日志如下。可以看到文件并没有被删除,而是执行了移动命令。通过日志可知道回收文件存放路径为/user/root/.Trash/Current。可以通过移动或复制命令将文件恢复。

hdfs 是否允许跳过回收站 hdfs回收站路径_hadoop_02

快照

HDFS的快照功能,可以将某一个目录的当前状态保存成一个镜像,可应用于如下场景,总结来讲快照作用为快速恢复

  • 防止用户误操作
  • 备份数据
  • 测试功能
  • 灾难恢复

快照相关命令如下:

开启关闭快照功能-针对目录

#开启快照
hdfs dfsadmin -allowSnapshot hdfs目录 
#关闭快照
hdfs dfsadmin -disallowSnapshot hdfs目录

hdfs 是否允许跳过回收站 hdfs回收站路径_hadoop_03

创建快照

hdfs dfs -createSnapshot hdfs目录 快照名称

hdfs 是否允许跳过回收站 hdfs回收站路径_hdfs_04

查看快照、对比快照

#可以看到开启了快照功能的目录有哪些
hdfs lsSnapshottableDir
#对比两个快照的差别
hdfs snapshotDiff hdfs目录 快照1 快照2

也可通过浏览器查看快照

hdfs 是否允许跳过回收站 hdfs回收站路径_hdfs_05

删除、修改、恢复快照

#删除快照
hdfs dsf -deleteSnapshot hdfs目录 快照名
#重命名快照
hdfs dsf -renameSnapshot hdfs目录 旧快照名 新快照名
#恢复快照
hdfs dsf -cp 快照文件 hdfs目录

配额

HDFS配额功能作用为限制操作,通过名称配额限制目录下文件个数,空间配额限制上传文件大小。

名称配额-限制个数

通过名称配额可限制目录下总文件个数,到达配额个数后无法继续往目录下添加文件,
注意:目录本身占用1个配额

#给目录添加名称配额
hdfs dfsadmin -setQuota 个数 hdfs目录
#清除名称配额
hdfs dfsadmin -clrQuota hdfs目录

空间配额-限制大小

通过空间配额限制目录最大能保存的大小,注意点:
大小计算的是block大小而非实际大小
大小需要计算备份个数

#添加空间配额,大小可以使用 m, g, t 代表 MB, GB, TB
hdfs dfsadmin -setSpaceQuota 大小 hdfs目录
#清除配额
hdfs dfsadmin -clrSpaceQuota hdfs目录

HDFS的安全模式

HDFS启动时会自动进入安全模式,安全模式的目的主要为:检查副本率(数据块冗余度是否满足要求)
在安全模式下HDFS是只读的

#安全模式查看操作方式,也可通过浏览器查看状态
hdfs dfsadmin [-safemode enter | leave | get | wait]
#配置副本率,默认为0.999f  hdfs-site.xml 文件中
<property>
	<name>dfs.namenode.safemode.threshold-pct</name>
	<value>0.999f</value>
</property>

NameNode增强

HDFS的结构为主从结构,假如主节点NameNode宕机将造成整儿集群无法使用。所以要减少单NameNode故障对集群造成的影响。

NameNode联盟

NameNode联盟的原理是负载均衡,实现后同一时间会有多个Active的NameNode,通过控制分发请求的方式,减少单NameNode的压力以及单机故障后对整个集群的影响。
联盟的方式可以增加缓存数据总量且不影响单机性能。理论上可通过横向扩展NameNode的个数将元信息都缓存在内存里。

HA(High Availability )- 高可用性

HA实现的原理是失败迁移,集群会有多个NamenNode,但同时只会有一个NameNode的状态为Active,其余的为Standby,状态的切换需要借助ZooKeeper实现。