You need to enable JavaScript to run this app.
导航
进阶使用
最近更新时间:2025.04.01 20:13:40首次发布时间:2024.11.12 16:54:07
我的收藏
有用
有用
无用
无用

Snapshot 使用

HDFS 快照是文件系统的只读时间点副本。可以对文件系统的子树或整个文件系统进行快照。快照的一些常见用例是数据备份,防止用户错误和灾难恢复。
快照不是数据的简单拷贝,只做差异的复制,因此快照的生成往往非常的迅速。并且创建快照时,block 块并不会被拷贝。快照文件中只记录了 block 列表和文件大小,不会做任何数据拷贝。
具体操作指令如下:
1.开启与禁用指定目录的快照。

hdfs dfsadmin -allowSnapshot <hdfs path> #开启

hdfs dfsadmin -disallowSnapshot <hdfs path> #禁用

2.对指定目录创建快照。

hdfs dfs -createSnapshot <hdfs path>

#创建快照之前,先要允许该目录创建快照(开启)

3.指定创建快照的名称。

hdfs dfs -createSnapshot <hdfs path> <snapshot name>

#其中<snapshot name>是自己指定的快照别名
#example:
hdfs dfs -createSnapshot /test snapshot1

4.重命名快照。

hdfs dfs -renameSnapshot <hdfs path> <oldname> <newname>

#example:
hdfs dfs -renameSnapshot /test snap1 snap2

5.删除快照。

hdfs dfs -deleteSnapshot <path> <snapshotName>

6.获取当前用户的快照目录列表。

hdfs lsSnapshottableDir

7.比较两个快照之间的差异。

hdfs snapshotDiff <path> <Snapshot1> <Snapshot2>

#example:
hdfs dfs -createSnapshot /test snapshot1
hdfs dfs -createSnapshot /test snapshot2
hdfs snapshotDiff /test snapshot1 snapshot2

关于 HDFS 快照更多的详细介绍,请参见 Apache Hadoop 社区文档。

Balance 工具的使用

在 Hadoop 集群中,经常会出现各个 DataNode 节点磁盘空间使用率分布不均衡的状况。为了均衡空间的占用率,我们在 HDFS 集群中使用 balance 工具来进行重新平衡

LAS 控制台 Balance 操作

集群操作页面有 Rebalance 按钮,您可以通过单击按钮进行快捷操作,但操作会使用 Rebalance 的默认参数。

  1. 登录 LAS 控制台。
  2. 在左侧导航栏中,单击集群管理集群列表集群详情服务管理HDFS 服务按钮,进入服务概述界面。
  3. 在服务概述界面右上角,单击服务操作Rebalance 按钮,进入 Rebalance 弹窗配置界面,勾选 Rebalance 执行的节点范围,并添加此次操作备注信息。
  4. 单击确定按钮,完成 Rebalance 操作,此时集群将进入后台 Rebalance,此时可以通过 HDFS UI 观察进度,当 Rebalance 完成后,节点磁盘空间的使用率平衡。

Balance 命令行方式操作

查看 HDFS balancer 的命令如下:

hdfs balancer -help

Usage: java Balancer
[-policy <policy>] the balancing policy: datanode or blockpool
[-threshold <threshold>] Percentage of disk capacity
[-exclude [-f <hosts-file> | comma-sperated list of hosts]] Excludes the specified datanodes.
[-include [-f <hosts-file> | comma-sperated list of hosts]] Includes only the specified datanodes.
[-blockpools <comma-separated list of blockpool ids>]
[-idleiterations <idleiterations>]
[-runDuringUpgrade]

该工具不断地将块从高利用率的数据节点移动到利用率低的数据节点。
在 LAS 集群中做 HDFS balance 的示例代码如下:

start-balancer.sh -threshold 5

#其中 5是设置的阈值即5%

Hadoop Balance 的执行一般分为四步

  1. 从 NameNode 获取 DataNode 磁盘的使用情况。
  2. 计算需要将哪些数据移动到哪些节点。
  3. 分别进行移动,完成后删除旧的 Block 信息。
  4. 循环执行,直至达到平衡标准。

Balance 工具退出

Balance 工具退出执行的条件有以下五种,满足任意一条,Balance 就会自动退出:

  1. 集群处于平衡状态;
  2. 没有块能够移动;
  3. 在指定的连续迭代中(默认为 5 次)没有移动块;
  4. 与 NameNode 通信时出现 IOException 异常;
  5. 另一个平衡器正在运行。

HDFS balance 数据均衡优化

  1. 增加带宽。

修改 hdfs-site.xmldfs.balance.bandwidthPerSec 参数。
参数含义:设置 balance 工具在运行中所能占用的带宽。设置的过大可能会造成 mapred 运行缓慢,默认设置为 10M,通常推荐设为 100MB/s。

  1. 增加最大线程数。

修改 hdfs-site.xmldfs.datanode.max.transfer.threads 参数。
参数含义:指定用于在 DataNode 间传输 block 数据的最大线程数,可修改为 4096 。

  1. 增加用于 balance 待移动 block 的最大线程数。

修改 hdfs-site.xmldfs.datanode.balance.max.concurrent.moves 参数。
参数含义:指定 DataNode 上同时用于 balance 待移动 block 的最大线程个数,这个值默认是 5,一般设置为 DataNode 磁盘的数量*4。
关于 hdfsbalance 工具使用更多的详细介绍,请参见 ApacheHadoop 社区文档。

Quotas 使用

HDFS 允许管理员为每一个用户和每一个文件夹设置配额:命名配额(name quota)和空间配额(space quota)。

  • name quota

对该目录下的名称数量进行硬性限制,即为文件夹下的数量作出限制,超过限制则会报错:quota exceed,最大值配额为:Long.MAX_Value。新创建的文件夹默认没有分配 quota。

  • space quota

设置一个目录的大小,如果超过则块写入会失败(副本也算)。最大的配额为:Long.Max_Value。目录不使用主机文件系统不计算在空间配额里面,主机文件系统用来记录文件源数据的数据不算在配额中。
设置配额:

#设置name quota

hdfs dfsadmin -setQuota <nums> <Directory>... <Directory>

#example:

hdfs dfsadmin -setQuota 9999 /user/test
#设置space quota

hdfs dfsadmin -setSpaceQuota <capacity> <Directory>... <Directory>

#example:

hdfs dfsadmin -setSpaceQuota 15g /user/test

查看配额:

hadoop fs -count -q [-h] [-v] [-t [comma-separated list of storagetypes]] <directory>...<directory>

#参数说明:
#-q选项,会报告为每个目录设置的name quota值,剩余的可用name quota,设置的SpaceQuota值和剩余的可用SpaceQuota。如果目录没有配额设置,则报告的值为none和inf。
#-h选项以人类可读格式显示大小。
#-v选项显示标题行。
#-t选项显示每个存储类型配额集以及每个目录的剩余可用配额
#example:
hdfs dfs -count -q /user/test

删除配额:

#删除目录的name quota
hdfs dfsadmin -clrQuota <directory>...<directory>

#example:
hdfs dfsadmin -clrQuota /user/test
#删除目录的sapce quota
hdfs dfsadmin -clrSpaceQuota <directory>...<directory>

#example:
hdfs dfsadmin -clrSpaceQuota /user/test

关于 HDFS Quotas 更多的详细介绍,请参见 Apache Hadoop 社区文档。

DFSAdmin 命令

bin/hadoop dfsadmin 命令支持一些与 HDFS 管理相关的操作。bin/hadoop dfsadmin -help 命令可以列出当前所有支持的命令。例如:

  • -report:报告 HDFS 的基本统计信息。有些信息也可以在 NameNode Web 服务首页看到。
  • -safemode:虽然通常并不需要,但是管理员的确可以手动让 NameNode 进入或离开安全模式。
  • -finalizeUpgrade:删除上一次升级时制作的集群备份。