HDFS(七)—— HDFS 的高级功能

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a909301740/article/details/84454557

HDFS 的高级功能主要包括:

  1. 回收站:便于找到误删的数据。
  2. 快照:对数据的备份。
  3. 配额:限制目录中文件的数量和大小。

一、回收站(trash)

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

    <property>
    	<!-- 单位:分钟 -->
       <name>fs.trash.interval</name>
       <value>1440</value>
    </property>
    
  • 删除的文件其实是被 ctrl + x 移动到了一个隐藏目录 .Trash,本质上就是一个 mv 命令。

  • 上面的配置表示,删除之后放到回收站里的文件存放时间超过 1440 分钟将被彻底删除,释放占用的数据块。

  • 查看回收站的数据:hdfs dfs -lsr /user/root/.Trash/Current

  • 从回收站中恢复数据:hdfs dfs -cp /user/root/.Trash/Current/trashData.txt /data.txt

  • 清空回收站:hdfs dfs -expunge

  • 对比没开启回收站和开启了回收站时删除文件的日志:

    没开启回收站:

    18/04/09 21:35:40 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
    Deleted /tools ---> 成功删除(对比:回收站)
    

    开启回收站:

    Moved: 'hdfs://bigdata111:9000/tools/a.zip' to trash at: hdfs://bigdata111:9000/user/root/.Trash/Current
    

    可以看出回收站其实就是个隐藏目录,删掉的文件其实就是剪切到了那个隐藏目录里。

二、快照(snapshot)

快照其实就是一种备份策略,本质上就是一个 cp 命令。

应用场景:

  • 防止用户的错误操作
  • 备份
  • 实验 / 测试
  • 灾难恢复

HDFS 的快照操作:

  • 开启快照:hdfs dfsadmin -allowSnapshot /input

  • 创建快照:hdfs dfs -createSnapshot /input backup_input_1125_01

  • 查看快照:hdfs lsSnapshottableDir

    当然查看快照还可以通过我们的 WebConsole 来查看。

  • 对比快照:hdfs snapshortDiff /input backup_1125_01 backup_1125_02

  • 恢复快照:hdfs dfs -cp /input/.snapshot/backup_1125_01/data.txt /input

三、配额(quota)

配额作用:限制目录下的文件的数量大小。最大的配额是 Long.Max_Value。配额为 1 可以强制目录保持为空。

配额是个管理员命令

  1. 名称配额:用于设置该目录中能够存放的最多文件(目录)个数。

  2. 空间配额:用于设置该目录中最大能够存放的文件大小。

示例:

  • 设置 /input 目录的名称配额为 3:hdfs dfsadmin -setQuota 3 /input

  • 消除 /input 目录的名称配额:hdfs dfsadmin -clrQuota /input

  • 设置 /input 目录的空间配额为 1M:hdfs dfsadmin -setSpaceQuota 1M /input

  • 清除 /input 目录的空间配额:hdfs dfs -clrSpaceQuota /input

注意:设置的值一定不能小于 Hadoop 的数据块的大小,1.x 版本的数据块大小是 64M,2.x 版本的数据块大小是 128M,HDFS 保存数据是以数据块为单位分配数据的,小于数据块的大小将不能分配数据。

猜你喜欢

转载自blog.csdn.net/a909301740/article/details/84454557