HDFS高级功能

本篇主要介绍HDFS的高级功能:

  • 回收站
  • 快照snapshot(一种备份)
  • 配额
  • 安全模式

回收站

和我们Window系统上的回收站一样,HDFS也是存在的,不过它默认是关闭的,要开启需要配置。具体的配置如下:

vi core-site.xml
<property>
        <name>fs.trash.intervalname>
        //回收站持续时间为1天(单位是分钟)
        <value>1440value>
property>

开启之后,我们删除/input/a.exe文件

hdfs dfs -rmr /input/a.exe

日志如下:

Moved: ‘hdfs://bigdata113:9000/input/a.exe’ to trash at: hdfs://bigdata113:9000/user/root/.Trash/Current (将/input/a.exe文件移动到了/user/root/.Trash/Current目录下)

我们通过 hdfs dfs -ls /user/root/.Trash/Current/input来查看一下:

这里写图片描述

下面执行清空回收站的操作:

hdfs dfs -expunge

结果如下:

清空回收站的结果

可以发现,再次查询回收站就已经没有了。

回收站的本质:ctrl+x 移动到一个隐藏目录。可以通过cp操作来恢复!!

使用场景:防止用户的错误操作(因为在一定条件下可恢复)

快照(除非当前数据很重要,否则不建议开启。因为本身有冗余度)

快照本质上就是一个镜像,用来作备份的。常用命令如下:

//操作命令
[-createSnapshot <snapshotDir> [<snapshotName>]]    创建快照
[-deleteSnapshot <snapshotDir> <snapshotName>]      删除快照
[-renameSnapshot <snapshotDir> <oldName> <newName>] 重命名快照
//管理员命令
[-allowSnapshot <snapshotDir>]      开启快照
[-disallowSnapshot <snapshotDir>]   关闭快照
  1. 开启快照(HDFS默认是禁用快照功能的,想要使用需要使用以下命令开启)

    hdfs dfsadmin -allowSnapshot /input (/input目录开启快照)

  2. 创建快照

    hdfs dfs -createSnapshot /input backup_input (为/input目录创建的快照目录为backup_input)

  3. 查看快照

    hdfs dfs -ls /input/.snapshot/backup_input

  4. 对比快照

    hdfs snapshotDiff /input backup_input_01 backup_input_02

  5. 恢复快照

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

我们以/input为例,进行以下操作:

  • 打开快照并创建备份

    hdfs dfsadmin -allowSnapshot /input (必须是目录)

    hdfs dfs -createSnapshot /input backup (若未指定则系统将生成以字符s开头紧跟当前时间戳的名称 )

  • 重命名备份

    hdfs dfs -renameSnapshot /input backup backup_input(注意:前面的目录指定到我们上面开启快照时指定的/input即可,不能指定到/input/.snapshot,否则会报错)

  • 删除/input下的所有文件,仅保留data.txt,然后重新备份,对比两个备份的差别

    hdfs dfs -rmr /input/*.exe(删除/input下的所有.exe文件,此时只剩data.txt)

    hdfs dfs -createSnapshot /input backup_input2(二次备份)

    hdfs snapshotDiff /input backup_input backup_input2

    对比结果如下:

[快照对比结果

结果显示有三个exe文件被删除。

  • 删除原目录,并copy快照回源目录

    hdfs dfs -rmr /input/data.txt(删除input下data.txt文件)

    hdfs dfs -cp /input/.snapshot/backup_input/data.txt /input(使用备份恢复/input目录)

使用场景:

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

配额

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

配额quota类型:名称配额、空间配额

(1)名称配额:限制某个目录下,文件的个数(管理员命令,即hdfsadmin)

 [-setQuota  ...]   设置名称配额
 [-clrQuota ...]          清除名称配额

hdfs dfsadmin -setQuota 3 /input

此时设置tools目录的名称配额为3,那么它实际上能放置的文件个数为N-1,N为我们设置的配额数,即3

hdfs dfsadmin -clrQuota /input

清除/input目录的名称配额

(2)空间配额:限制某个目录下,文件的大小(管理员命令)

 [-setSpaceQuota  [-storageType ] ...]     设置空间配额
 [-clrSpaceQuota [-storageType ] ...]            清除空间配额

hdfs dfsadmin -setSpaceQuota 1M /input

设置/input目录的空间配额为1M

hdfs dfsadmin -clrSpaceQuota /input

清除input目录的空间配额

对于空间配额,设置的值一定不能小于128M(因为HDFS是以数据块来保存数据的,每一个数据块都占有128M的大小,设置小于128M的话,什么文件都放不下)

安全模式

安全模式safemode:hadoop的一种保护机制,用于保证集群中的数据块的安全性。在正常运行情况下,安全模式一定是off;如果是on,HDFS是只读。

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

HDFS高级功能_第1张图片

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

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

hdfs dfsadmin -safemode get     查看安全模式状态
hdfs dfsadmin -safemode enter   进入安全模式状态
hdfs dfsadmin -safemode leave   离开安全模式

关于HDFS所有的高级功能到这里就已经介绍完了,后面我们会介绍MapReduce,敬请期待!!

你可能感兴趣的:(大数据)