HDFS 命令指南

概述

所有 HDFS 命令都由 bin/hdfs 脚本调用。在没有任何参数的情况下运行 hdfs 脚本会打印所有命令的说明。

用法:hdfs [SHELL_OPTIONS] COMMAND [GENERIC_OPTIONS] [COMMAND_OPTIONS]

Hadoop 有一个选项解析框架,它既可以解析通用选项,也可以运行类。

COMMAND_OPTIONS 描述
SHELL_OPTIONS 常见的 shell 选项集。这些选项在 命令手册 页面中有记录。
GENERIC_OPTIONS 多个命令支持的通用选项集。有关详细信息,请参阅 Hadoop 命令手册
COMMAND COMMAND_OPTIONS 以下部分介绍了各种命令及其选项。这些命令已分组为 用户命令管理命令

用户命令

Hadoop 集群用户可用的命令。

classpath

用法:hdfs classpath [--glob |--jar <path> |-h |--help]

COMMAND_OPTION 描述
--glob 展开通配符
--jar path 将类路径写入名为 path 的 jar 中的清单
-h, --help 打印帮助

打印获取 Hadoop jar 和所需库所需的类路径。如果在没有参数的情况下调用,则打印由命令脚本设置的类路径,该类路径可能包含类路径条目中的通配符。其他选项会在通配符展开后打印类路径或将类路径写入 jar 文件的清单中。后者在无法使用通配符且展开的类路径超过支持的最大命令行长度的环境中很有用。

dfs

用法:hdfs dfs [COMMAND [COMMAND_OPTIONS]]

在 Hadoop 中支持的文件系统上运行文件系统命令。可以在 文件系统 Shell 指南 中找到各种 COMMAND_OPTIONS。

envvars

用法:hdfs envvars

显示计算的 Hadoop 环境变量。

fetchdt

用法:hdfs fetchdt <opts> <token_file_path>

COMMAND_OPTION 描述
--webservice NN_Url 用于联系 NN 的 URL(以 http 或 https 开头)
--renewer 名称 委派令牌更新者的名称
--cancel 取消委派令牌
--renew 更新委派令牌。必须使用 –renewer 名称 选项获取委派令牌。
--print 打印委派令牌
token_file_path 用于存储令牌的文件路径。

从 NameNode 获取委派令牌。有关详细信息,请参阅 fetchdt

fsck

用法

   hdfs fsck <path>
          [-list-corruptfileblocks |
          [-move | -delete | -openforwrite]
          [-files [-blocks [-locations | -racks | -replicaDetails | -upgradedomains]]]
          [-includeSnapshots] [-showprogress]
          [-storagepolicies] [-maintenance]
          [-blockId <blk_Id>] [-replicate]
COMMAND_OPTION 描述
path 从该路径开始检查。
-delete 删除损坏的文件。
-files 打印出正在检查的文件。
-files -blocks 打印出块报告
-files -blocks -locations 打印出每个块的位置。
-files -blocks -racks 打印出数据节点位置的网络拓扑。
-files -blocks -replicaDetails 打印出每个副本的详细信息。
-files -blocks -upgradedomains 打印出每个块的升级域。
-includeSnapshots 如果给定路径表示可创建快照的目录,或者其下有可创建快照的目录,则包括快照数据。
-list-corruptfileblocks 打印出丢失块的列表及其所属文件。
-move 将损坏的文件移动到 /lost+found。
-openforwrite 打印出已打开进行写入的文件。
-showprogress 已弃用。无论是否使用此开关,每处理 100 个文件都会打印一个点。
-storagepolicies 打印出块的存储策略摘要。
-maintenance 打印出维护状态节点详细信息。
-blockId 打印出有关块的信息。
-replicate 启动复制工作,以使复制错误的块满足块放置策略。

运行 HDFS 文件系统检查实用程序。有关详细信息,请参阅 fsck

getconf

用法

   hdfs getconf -namenodes
   hdfs getconf -secondaryNameNodes
   hdfs getconf -backupNodes
   hdfs getconf -journalNodes
   hdfs getconf -includeFile
   hdfs getconf -excludeFile
   hdfs getconf -nnRpcAddresses
   hdfs getconf -confKey [key]
COMMAND_OPTION 描述
-namenodes 获取集群中的 namenode 列表。
-secondaryNameNodes 获取集群中的辅助 namenode 列表。
-backupNodes 获取集群中的备份节点列表。
-journalNodes 获取集群中的日志节点列表。
-includeFile 获取定义可加入集群的数据节点的包含文件路径。
-excludeFile 获取定义需要退役的数据节点的排除文件路径。
-nnRpcAddresses 获取 namenode rpc 地址
-confKey [key] 从配置中获取特定密钥

从配置目录获取配置信息,进行后处理。

groups

用法:hdfs groups [username ...]

返回给定一个或多个用户名时的组信息。

httpfs

用法:hdfs httpfs

运行 HttpFS 服务器,即 HDFS HTTP 网关。

lsSnapshottableDir

用法:hdfs lsSnapshottableDir [-help]

COMMAND_OPTION 描述
-help 打印帮助

获取可创建快照的目录列表。当以超级用户身份运行此命令时,它将返回所有可创建快照的目录。否则,它将返回当前用户拥有的那些目录。

jmxget

用法:hdfs jmxget [-localVM ConnectorURL | -port port | -server mbeanserver | -service service]

COMMAND_OPTION 描述
-help 打印帮助
-localVM ConnectorURL 连接到同一台机器上的 VM
-port mbean 服务器端口 指定 mbean 服务器端口,如果缺少,它将尝试连接到同一 VM 中的 MBean 服务器
-server 指定 mbean 服务器(默认情况下为 localhost)
-service NameNode|DataNode 指定 jmx 服务。默认情况下为 NameNode。

从服务转储 JMX 信息。

oev

用法:hdfs oev [OPTIONS] -i INPUT_FILE -o OUTPUT_FILE

必需的命令行参数

COMMAND_OPTION 描述
-i,--inputFile arg 要处理的编辑文件,xml(不区分大小写)扩展名表示 XML 格式,任何其他文件名表示二进制格式
-o,--outputFile arg 输出文件名称。如果指定的文件存在,它将被覆盖,文件的格式由 -p 选项决定

可选的命令行参数

COMMAND_OPTION 描述
-f,--fix-txids 重新编号输入中的事务 ID,以便没有间隙或无效的事务 ID。
-h,--help 显示用法信息并退出
-r,--recover 在读取二进制编辑日志时,使用恢复模式。这将使你有机会跳过编辑日志的损坏部分。
-p,--processor arg 选择要对图像文件应用的处理器类型,当前支持的处理器有:二进制(Hadoop 使用的本机二进制格式)、xml(默认,XML 格式)、stats(打印有关编辑文件统计信息)
-v,--verbose 更详细的输出,打印输入和输出文件名,对于写入文件的处理器,还输出到屏幕。对于大型图像文件,这将大幅增加处理时间(默认值为 false)。

Hadoop 离线编辑查看器。有关更多信息,请参阅 离线编辑查看器指南

oiv

用法:hdfs oiv [OPTIONS] -i INPUT_FILE

必需的命令行参数

COMMAND_OPTION 描述
-i|--inputFile 输入文件 指定要处理的输入 fsimage 文件(或 XML 文件,如果使用了 ReverseXML 处理器)。

可选的命令行参数

COMMAND_OPTION 描述
-o,--outputFile 输出文件 指定输出文件名,如果指定的输出处理器生成一个。如果指定的文件已存在,则会对其进行静默覆盖。(默认输出到 stdout)如果输入文件是 XML 文件,它还会创建一个 <outputFile>.md5。
-p,--processor 处理器 指定要对图像文件应用的图像处理器。当前有效的选项有:Web(默认)、XMLDelimitedFileDistributionReverseXML
-addr 地址 指定要监听的地址(主机:端口)。(默认值为 localhost:5978)。此选项与 Web 处理器一起使用。
-maxSize 大小 指定要以字节为单位分析的文件大小范围 [0, maxSize](默认值为 128GB)。此选项与 FileDistribution 处理器一起使用。
-step 大小 指定分布粒度(以字节为单位)(默认值为 2MB)。此选项与 FileDistribution 处理器一起使用。
-format 以人类可读的方式格式化输出结果,而不是以字节数格式化。(默认值为 false)。此选项与 FileDistribution 处理器一起使用。
-delimiter arg 与 Delimited 处理器一起使用的分隔字符串。
-t,--temp 临时目录 使用临时目录缓存中间结果以生成 Delimited 输出。如果未设置,则 Delimited 处理器在输出文本之前在内存中构建名称空间。
-h,--help 显示工具用法和帮助信息,然后退出。

Hadoop 2.4 或更高版本中图像文件的 Hadoop 离线图像查看器。有关更多信息,请参阅 离线图像查看器指南

oiv_legacy

用法:hdfs oiv_legacy [OPTIONS] -i INPUT_FILE -o OUTPUT_FILE

COMMAND_OPTION 描述
-i,--inputFile 输入文件 指定要处理的输入 fsimage 文件。
-o,--outputFile 输出文件 指定输出文件名,如果指定的输出处理器生成一个。如果指定的文件已存在,则会对其进行静默覆盖。

可选的命令行参数

COMMAND_OPTION 描述
-p|--processor 处理器 指定要应用于图像文件的图像处理器。有效选项为 Ls(默认)、XML、Delimited、Indented、FileDistribution 和 NameDistribution。
-maxSize 大小 指定要以字节为单位分析的文件大小范围 [0, maxSize](默认值为 128GB)。此选项与 FileDistribution 处理器一起使用。
-step 大小 指定分布粒度(以字节为单位)(默认值为 2MB)。此选项与 FileDistribution 处理器一起使用。
-format 以人类可读的方式格式化输出结果,而不是以字节数格式化。(默认值为 false)。此选项与 FileDistribution 处理器一起使用。
-skipBlocks 不枚举文件中的各个块。对于具有非常大文件的命名空间,这可以节省处理时间和输出文件空间。Ls 处理器读取块以正确确定文件大小并忽略此选项。
-printToScreen 将处理器的输出通过管道传输到控制台以及指定的文件。对于非常大的命名空间,这可能会将处理时间增加一个数量级。
-delimiter arg 与 Delimited 处理器结合使用时,用 arg 指定的字符串替换默认制表符分隔符。
-h|--help 显示工具用法和帮助信息,然后退出。

适用于较旧 Hadoop 版本的 Hadoop 离线图像查看器。有关更多信息,请参见 oiv_legacy Command

snapshotDiff

用法:hdfs snapshotDiff <path> <fromSnapshot> <toSnapshot>

确定 HDFS 快照之间的差异。有关更多信息,请参见 HDFS Snapshot Documentation

version

用法:hdfs version

打印版本。

管理命令

适用于 Hadoop 集群管理员的命令。

balancer

用法

    hdfs balancer
          [-policy <policy>]
          [-threshold <threshold>]
          [-exclude [-f <hosts-file> | <comma-separated list of hosts>]]
          [-include [-f <hosts-file> | <comma-separated list of hosts>]]
          [-source [-f <hosts-file> | <comma-separated list of hosts>]]
          [-blockpools <comma-separated list of blockpool ids>]
          [-idleiterations <idleiterations>]
          [-runDuringUpgrade]
          [-asService]
COMMAND_OPTION 描述
-policy <policy> datanode(默认):如果每个数据节点都处于平衡状态,则集群处于平衡状态。

blockpool:如果每个数据节点中的每个块池都处于平衡状态,则集群处于平衡状态。
-threshold <threshold> 磁盘容量的百分比。这将覆盖默认阈值。
-exclude -f <hosts-file> | <以逗号分隔的主机列表> 排除指定的 data 节点,使其不被平衡器平衡。
-include -f <hosts-file> | <以逗号分隔的主机列表> 仅包括指定的 data 节点,使其被平衡器平衡。
-source -f <hosts-file> | <以逗号分隔的主机列表> 仅选择指定的数据节点作为源节点。
-blockpools <以逗号分隔的块池 ID 列表> 平衡器将仅在包含在此列表中的块池上运行。
-idleiterations <迭代次数> 退出前最大空闲迭代次数。这将覆盖默认的 idleiterations(5)。
-runDuringUpgrade 是否在正在进行的 HDFS 升级期间运行平衡器。这通常是不需要的,因为它不会影响使用率过高的机器上的已用空间。
-asService 将平衡器作为长期运行服务运行。
-h|--help 显示工具用法和帮助信息,然后退出。

运行群集平衡实用程序。管理员只需按 Ctrl-C 即可停止重新平衡进程。有关更多详细信息,请参阅 平衡器

请注意,blockpool 策略比 datanode 策略更严格。

除了上述命令选项外,从 2.7.0 开始引入了固定功能,以防止某些副本被平衡器/移动器移动。此固定功能在默认情况下处于禁用状态,可以通过配置属性 “dfs.datanode.block-pinning.enabled” 启用。启用后,此功能仅影响写入 create() 调用中指定的首选节点的块。当我们希望维护数据局部性时,此功能非常有用,例如 HBase 区域服务器等应用程序。

如果您希望将平衡器作为长期运行服务运行,请使用守护程序模式和 -asService 参数启动平衡器。您可以使用以下命令执行此操作:hdfs --daemon start balancer -asService,或仅使用带有参数 -asService 的 sbin/start-balancer.sh 脚本。

cacheadmin

用法

hdfs cacheadmin [-addDirective -path <path> -pool <pool-name> [-force] [-replication <replication>] [-ttl <time-to-live>]]
hdfs cacheadmin [-modifyDirective -id <id> [-path <path>] [-force] [-replication <replication>] [-pool <pool-name>] [-ttl <time-to-live>]]
hdfs cacheadmin [-listDirectives [-stats] [-path <path>] [-pool <pool>] [-id <id>]]
hdfs cacheadmin [-removeDirective <id>]
hdfs cacheadmin [-removeDirectives -path <path>]
hdfs cacheadmin [-addPool <name> [-owner <owner>] [-group <group>] [-mode <mode>] [-limit <limit>] [-maxTtl <maxTtl>]]
hdfs cacheadmin [-modifyPool <name> [-owner <owner>] [-group <group>] [-mode <mode>] [-limit <limit>] [-maxTtl <maxTtl>]]
hdfs cacheadmin [-removePool <name>]
hdfs cacheadmin [-listPools [-stats] [<name>]]
hdfs cacheadmin [-help <command-name>]

有关更多信息,请参阅 HDFS 缓存管理文档

crypto

用法

  hdfs crypto -createZone -keyName <keyName> -path <path>
  hdfs crypto -listZones
  hdfs crypto -provisionTrash -path <path>
  hdfs crypto -help <command-name>

有关更多信息,请参阅 HDFS 透明加密文档

datanode

用法:hdfs datanode [-regular | -rollback | -rollingupgrade rollback]

COMMAND_OPTION 描述
-regular 正常数据节点启动(默认)。
-rollback 将数据节点回滚到以前版本。这应在停止数据节点并分发旧 Hadoop 版本后使用。
-rollingupgrade rollback 回滚滚动升级操作。

运行 HDFS 数据节点。

dfsadmin

用法

    hdfs dfsadmin [-report [-live] [-dead] [-decommissioning] [-enteringmaintenance] [-inmaintenance] [-slownodes]]
    hdfs dfsadmin [-safemode enter | leave | get | wait | forceExit]
    hdfs dfsadmin [-saveNamespace [-beforeShutdown]]
    hdfs dfsadmin [-rollEdits]
    hdfs dfsadmin [-restoreFailedStorage true |false |check]
    hdfs dfsadmin [-refreshNodes]
    hdfs dfsadmin [-setQuota <quota> <dirname>...<dirname>]
    hdfs dfsadmin [-clrQuota <dirname>...<dirname>]
    hdfs dfsadmin [-setSpaceQuota <quota> [-storageType <storagetype>] <dirname>...<dirname>]
    hdfs dfsadmin [-clrSpaceQuota [-storageType <storagetype>] <dirname>...<dirname>]
    hdfs dfsadmin [-finalizeUpgrade]
    hdfs dfsadmin [-rollingUpgrade [<query> |<prepare> |<finalize>]]
    hdfs dfsadmin [-upgrade [query | finalize]
    hdfs dfsadmin [-refreshServiceAcl]
    hdfs dfsadmin [-refreshUserToGroupsMappings]
    hdfs dfsadmin [-refreshSuperUserGroupsConfiguration]
    hdfs dfsadmin [-refreshCallQueue]
    hdfs dfsadmin [-refresh <host:ipc_port> <key> [arg1..argn]]
    hdfs dfsadmin [-reconfig <namenode|datanode> <host:ipc_port|livenodes> <start |status |properties>]
    hdfs dfsadmin [-printTopology]
    hdfs dfsadmin [-refreshNamenodes datanodehost:port]
    hdfs dfsadmin [-getVolumeReport datanodehost:port]
    hdfs dfsadmin [-deleteBlockPool datanode-host:port blockpoolId [force]]
    hdfs dfsadmin [-setBalancerBandwidth <bandwidth in bytes per second>]
    hdfs dfsadmin [-getBalancerBandwidth <datanode_host:ipc_port>]
    hdfs dfsadmin [-fetchImage <local directory>]
    hdfs dfsadmin [-allowSnapshot <snapshotDir>]
    hdfs dfsadmin [-disallowSnapshot <snapshotDir>]
    hdfs dfsadmin [-shutdownDatanode <datanode_host:ipc_port> [upgrade]]
    hdfs dfsadmin [-evictWriters <datanode_host:ipc_port>]
    hdfs dfsadmin [-getDatanodeInfo <datanode_host:ipc_port>]
    hdfs dfsadmin [-metasave filename]
    hdfs dfsadmin [-triggerBlockReport [-incremental] <datanode_host:ipc_port> [-namenode <namenode_host:ipc_port>]]
    hdfs dfsadmin [-listOpenFiles [-blockingDecommission] [-path <path>]]
    hdfs dfsadmin [-help [cmd]]
COMMAND_OPTION 描述
-report [-live] [-dead] [-decommissioning] [-enteringmaintenance] [-inmaintenance] [-slownodes] 报告基本文件系统信息和统计数据,dfs 使用量可能与“du”使用量不同,因为它测量了所有 DN 上复制、校验和、快照等使用的原始空间。可选标志可用于过滤显示的数据节点列表。筛选器基于 DN 状态(例如,活动、死亡、退役)或 DN 的性质(例如,慢节点 - 延迟高于其对等节点的节点)。
-safemode enter|leave|get|wait|forceExit 安全模式维护命令。安全模式是 NameNode 的一种状态,其中它

1. 不接受对名称空间的更改(只读)

2. 不复制或删除块。

安全模式在 NameNode 启动时自动进入,当配置的最小块百分比满足最小复制条件时,自动退出安全模式。如果 NameNode 检测到任何异常,它将一直处于安全模式,直到该问题得到解决。如果该异常是故意操作的结果,则管理员可以使用 -safemode forceExit 退出安全模式。可能需要 forceExit 的情况是

1. NameNode 元数据不一致。如果 NameNode 检测到元数据已在带外修改,并且可能导致数据丢失,则 NameNode 将进入 forceExit 状态。此时,用户可以重新启动 NameNode 并使用正确的元数据文件,或 forceExit(如果数据丢失是可以接受的)。

2. 回滚会导致元数据被替换,并且在极少数情况下,它可能会触发 NameNode 中的安全模式 forceExit 状态。在这种情况下,您可以通过发出 -safemode forceExit 来继续。

安全模式也可以手动进入,但随后只能手动关闭。
-saveNamespace [-beforeShutdown] 将当前名称空间保存到存储目录中并重置编辑日志。需要安全模式。如果给出了“beforeShutdown”选项,则 NameNode 仅在时间窗口(可配置的检查点周期数)内未执行检查点时执行检查点。这通常在关闭 NameNode 之前使用,以防止潜在的 fsimage/editlog 损坏。
-rollEdits 在活动 NameNode 上滚动编辑日志。
-restoreFailedStorage true|false|check 此选项将打开/关闭自动尝试恢复失败的存储副本。如果失败的存储再次可用,系统将在检查点期间尝试恢复编辑和/或 fsimage。“check”选项将返回当前设置。
-refreshNodes 重新读取主机和排除文件,以更新允许连接到 NameNode 的数据节点集,以及应该退役或重新委任的数据节点集。
-setQuota <quota> <dirname>…<dirname> 有关详细信息,请参阅 HDFS 配额指南
-clrQuota <dirname>…<dirname> 有关详细信息,请参阅 HDFS 配额指南
-setSpaceQuota <quota> [-storageType <storagetype>] <dirname>…<dirname> 有关详细信息,请参阅 HDFS 配额指南
-clrSpaceQuota [-storageType <storagetype>] <dirname>…<dirname> 有关详细信息,请参阅 HDFS 配额指南
-finalizeUpgrade 完成 HDFS 升级。数据节点删除其以前版本的正在运行的目录,然后 NameNode 执行相同操作。这将完成升级过程。
-rollingUpgrade [<query>|<prepare>|<finalize>] 有关详细信息,请参见滚动升级文档
-upgrade query|finalize 查询当前升级状态。

完成 HDFS 升级(相当于 -finalizeUpgrade)。
-refreshServiceAcl 重新加载服务级授权策略文件。
-refreshUserToGroupsMappings 刷新用户到组的映射。
-refreshSuperUserGroupsConfiguration 刷新超级用户代理组映射
-refreshCallQueue 从配置中重新加载调用队列。
-refresh <host:ipc_port> <key> [arg1..argn] 触发在 <host:ipc_port> 上由 <key> 指定的资源的运行时刷新。所有其他参数都将发送到主机。
-reconfig <datanode |namenode> <host:ipc_port|livenodes> <start|status|properties> 启动重新配置或获取正在进行的重新配置的状态,或获取可重新配置属性的列表。第二个参数指定节点类型。第三个参数指定主机地址。对于 start 或 status,数据节点支持 livenodes 作为第三个参数,这将在所有活动数据节点上启动或检索重新配置。
-printTopology 打印 NameNode 报告的机架及其节点的树。
-refreshNamenodes datanodehost:port 对于给定的数据节点,重新加载配置文件,停止提供已删除的块池并开始提供新的块池。
-getVolumeReport datanodehost:port 对于给定的数据节点,获取卷报告。
-deleteBlockPool datanode-host:port blockpoolId [force] 如果传递了 force,则将删除给定数据节点上给定块池 ID 的块池目录及其内容,否则只有在目录为空时才删除该目录。如果数据节点仍在提供块池,则该命令将失败。请参阅 refreshNamenodes 以关闭数据节点上的块池服务。
-setBalancerBandwidth <以字节/秒为单位的带宽> 在 HDFS 块平衡期间更改每个数据节点使用的网络带宽。<bandwidth> 是每个数据节点将使用的最大字节/秒数。此值将覆盖 dfs.datanode.balance.bandwidthPerSec 参数。注意:新值在数据节点上不是持久的。
-getBalancerBandwidth <datanode_host:ipc_port> 获取给定数据节点的网络带宽(以字节/秒为单位)。这是数据节点在 HDFS 块平衡期间使用的最大网络带宽。
-fetchImage <本地目录> 下载 NameNode 中最新的 fsimage 并将其保存在指定本地目录中。
-allowSnapshot <snapshotDir> 允许创建目录的快照。如果操作成功完成,该目录将变为可创建快照的目录。有关更多信息,请参阅 HDFS 快照文档
-disallowSnapshot <snapshotDir> 禁止创建目录的快照。在禁止创建快照之前,必须删除该目录的所有快照。有关更多信息,请参阅 HDFS 快照文档
-shutdownDatanode <datanode_host:ipc_port> [upgrade] 提交给定数据节点的关闭请求。有关详细信息,请参阅 滚动升级文档
-evictWriters <datanode_host:ipc_port> 使数据节点驱逐正在写入块的所有客户端。如果由于写入速度慢而导致退役挂起,则此操作非常有用。
-getDatanodeInfo <datanode_host:ipc_port> 获取有关给定数据节点的信息。有关详细信息,请参阅 滚动升级文档
-metasave filename 将 NameNode 的主要数据结构保存到 hadoop.log.dir 属性指定的目录中的 filename 中。如果 filename 存在,则会被覆盖。filename 将包含以下各项的一行

1. 向 NameNode 发送心跳的数据节点

2. 等待复制的块

3. 当前正在复制的块

4. 等待删除的块
-triggerBlockReport [-incremental] <datanode_host:ipc_port> [-namenode <namenode_host:ipc_port>] 触发给定数据节点的块报告。如果指定“incremental”,它将是增量块报告,否则将是完整块报告。如果给定“-namenode <namenode_host:ipc_port>”,则它只会向指定名称节点发送块报告。
-listOpenFiles [-blockingDecommission] [-path <path>] 列出 NameNode 当前管理的所有打开文件,以及访问它们的客户端名称和客户端计算机。打开的文件列表将按给定的类型和路径进行筛选。如果你只想列出阻止数据节点退役的打开文件,请添加 -blockingDecommission 选项。
-help [cmd] 显示给定命令的帮助,如果没有指定命令,则显示所有命令的帮助。

运行 HDFS dfsadmin 客户端。

dfsrouter

用法:hdfs dfsrouter

运行 DFS 路由器。有关更多信息,请参阅 路由器

dfsrouteradmin

用法

  hdfs dfsrouteradmin
      [-add <source> <nameservice1, nameservice2, ...> <destination> [-readonly] [-faulttolerant] [-order HASH|LOCAL|RANDOM|HASH_ALL] -owner <owner> -group <group> -mode <mode>]
      [-update <source> [<nameservice1, nameservice2, ...> <destination>] [-readonly true|false] [-faulttolerant true|false] [-order HASH|LOCAL|RANDOM|HASH_ALL] -owner <owner> -group <group> -mode <mode>]
      [-rm <source>]
      [-ls [-d] <path>]
      [-getDestination <path>]
      [-setQuota <path> -nsQuota <nsQuota> -ssQuota <quota in bytes or quota size string>]
      [-setStorageTypeQuota <path> -storageType <storage type> <quota in bytes or quota size string>]
      [-clrQuota <path>]
      [-clrStorageTypeQuota <path>]
      [-safemode enter | leave | get]
      [-nameservice disable | enable <nameservice>]
      [-getDisabledNameservices]
      [-refresh]
      [-refreshRouterArgs <host:ipc_port> <key> [arg1..argn]]
      [-refreshSuperUserGroupsConfiguration]
      [-refreshCallQueue]
COMMAND_OPTION 描述
-add source nameservices destination 添加装入表条目或在条目存在时更新条目。
-update 名称服务 目标 更新挂载表条目属性。
-rm 移除指定路径的挂载点。
-ls [-d] 路径 列出指定路径下的挂载点。指定 -d 参数以获取详细列表。
-getDestination 路径 获取文件所在或应创建的子集群。
-setQuota 路径 -nsQuota nsQuota -ssQuota ssQuota 为指定路径设置配额。有关配额详细信息,请参阅 HDFS 配额指南
-setStorageTypeQuota 路径 -storageType storageType stQuota 为指定路径设置存储类型配额。有关配额详细信息,请参阅 HDFS 配额指南
-clrQuota 路径 清除给定挂载点的配额。有关配额详细信息,请参阅 HDFS 配额指南
-clrStorageTypeQuota 路径 清除给定挂载点的存储类型配额。有关配额详细信息,请参阅 HDFS 配额指南
-safemode enter leave get 手动设置路由器进入或离开安全模式。选项 get 将用于验证路由器是否处于安全模式状态。
-nameservice disable enable 名称服务 从联合中禁用/启用名称服务。如果禁用,请求将不会发送到该名称服务。
-getDisabledNameservices 获取联合中禁用的名称服务。
-refresh 更新已连接路由器的挂载表缓存。
refreshRouterArgs <host:ipc_port> <key> [arg1..argn] 触发 <host:ipc_port> 上 <key> 指定的资源的运行时刷新。例如,要启用白名单检查,我们只需要发送刷新命令,而不是重新启动路由器服务器。
-refreshSuperUserGroupsConfiguration 刷新路由器上的超级用户代理组映射。
-refreshCallQueue 从配置中重新加载路由器的调用队列。

用于管理基于路由器的联合的命令。有关更多信息,请参阅 挂载表管理

diskbalancer

用法

   hdfs diskbalancer
     [-plan <datanode> -fs <namenodeURI>]
     [-execute <planfile>]
     [-query <datanode>]
     [-cancel <planfile>]
     [-cancel <planID> -node <datanode>]
     [-report -node <file://> | [<DataNodeID|IP|Hostname>,...]]
     [-report -node -top <topnum>]
COMMAND_OPTION 描述
-plan 创建磁盘平衡器计划
-execute 在数据节点上执行给定的计划
-query 从数据节点获取当前磁盘平衡器状态
-cancel 取消正在运行的计划
-report 报告数据节点的卷信息

运行磁盘平衡器 CLI。有关此命令的更多信息,请参见 HDFS 磁盘平衡器

ec

用法

   hdfs ec [generic options]
     [-setPolicy -policy <policyName> -path <path>]
     [-getPolicy -path <path>]
     [-unsetPolicy -path <path>]
     [-listPolicies]
     [-addPolicies -policyFile <file>]
     [-listCodecs]
     [-enablePolicy -policy <policyName>]
     [-disablePolicy -policy <policyName>]
     [-removePolicy -policy <policyName>]
     [-verifyClusterSetup -policy <policyName>...<policyName>]
     [-help [cmd ...]]
COMMAND_OPTION 描述
-setPolicy 将指定的纠删码策略设置为目录
-getPolicy 获取有关指定路径的纠删码策略信息
-unsetPolicy 取消先前对目录调用“setPolicy”设置的纠删码策略
-listPolicies 列出所有受支持的纠删码策略
-addPolicies 添加纠删码策略列表
-listCodecs 获取系统中受支持的纠删码编解码器和编码器的列表
-enablePolicy 在系统中启用纠删码策略
-disablePolicy 在系统中禁用纠删码策略
-removePolicy 从系统中删除纠删码策略
-verifyClusterSetup 验证群集设置是否可以支持纠删码策略列表

运行纠删码 CLI。有关此命令的更多信息,请参见 HDFS 纠删码

haadmin

用法

    hdfs haadmin -transitionToActive <serviceId> [--forceactive]
    hdfs haadmin -transitionToStandby <serviceId>
    hdfs haadmin -transitionToObserver <serviceId>
    hdfs haadmin -failover [--forcefence] [--forceactive] <serviceId> <serviceId>
    hdfs haadmin -getServiceState <serviceId>
    hdfs haadmin -getAllServiceState
    hdfs haadmin -checkHealth <serviceId>
    hdfs haadmin -help <command>
COMMAND_OPTION 描述
-checkHealth 检查给定 NameNode 的运行状况
-failover 在两个 NameNode 之间发起故障转移
-getServiceState 确定给定的 NameNode 是处于活动状态还是备用状态
-getAllServiceState 返回所有 NameNode 的状态
-transitionToActive 将给定 NameNode 的状态转换为活动状态(警告:不进行隔离)
-transitionToStandby 将给定 NameNode 的状态转换为备用状态(警告:不进行隔离)
-transitionToObserver 将给定 NameNode 的状态转换为观察者状态(警告:不进行隔离)
-help [cmd] 显示给定命令的帮助,如果没有指定命令,则显示所有命令的帮助。

有关此命令的更多信息,请参见 HDFS HA with NFSHDFS HA with QJM

journalnode

用法:hdfs journalnode

此命令启动 journalnode 以与 HDFS HA with QJM 一起使用。

mover

用法:hdfs mover [-p <files/dirs> | -f <local file name>]

COMMAND_OPTION 描述
-f <local file> 指定包含要迁移的 HDFS 文件/目录列表的本地文件。
-p <files/dirs> 指定要迁移的 HDFS 文件/目录的空间分隔列表。

运行数据迁移实用程序。有关更多详细信息,请参见 Mover

请注意,当同时省略 -p 和 -f 选项时,默认路径是根目录。

此外,从 2.7.0 开始引入固定功能,以防止平衡器/移动器移动某些副本。此固定功能默认禁用,可通过配置属性“dfs.datanode.block-pinning.enabled”启用。启用后,此功能仅影响写入到 create() 调用中指定的首选节点的块。当我们希望维护数据局部性时,此功能非常有用,适用于 HBase 区域服务器等应用程序。

namenode

用法

  hdfs namenode [-backup] |
          [-checkpoint] |
          [-format [-clusterid cid ] [-force] [-nonInteractive] ] |
          [-upgrade [-clusterid cid] [-renameReserved<k-v pairs>] ] |
          [-upgradeOnly [-clusterid cid] [-renameReserved<k-v pairs>] ] |
          [-rollback] |
          [-rollingUpgrade <rollback |started> ] |
          [-importCheckpoint] |
          [-initializeSharedEdits] |
          [-bootstrapStandby [-force] [-nonInteractive] [-skipSharedEditsCheck] ] |
          [-recover [-force] ] |
          [-metadataVersion ]
COMMAND_OPTION 描述
-backup 启动备份节点。
-checkpoint 启动检查点节点。
-format [-clusterid cid] 格式化指定的 NameNode。它启动 NameNode,对其进行格式化,然后将其关闭。如果名称目录已存在并且已禁用集群的重新格式化,则会引发 NameNodeFormatException。
-upgrade [-clusterid cid] [-renameReserved <k-v pairs>] 在分发新 Hadoop 版本后,应使用升级选项启动 NameNode。
-upgradeOnly [-clusterid cid] [-renameReserved <k-v pairs>] 升级指定的 NameNode,然后将其关闭。
-rollback 将 NameNode 回滚到以前的版本。在停止集群并分发旧 Hadoop 版本后,应使用此选项。
-rollingUpgrade <rollback|started> 有关详细信息,请参阅滚动升级文档
-importCheckpoint 从检查点目录加载映像并将其保存到当前目录。从属性 dfs.namenode.checkpoint.dir 读取检查点目录
-initializeSharedEdits 格式化新的共享编辑目录,并复制足够的编辑日志段,以便备用 NameNode 可以启动。
-bootstrapStandby [-force] [-nonInteractive] [-skipSharedEditsCheck] 允许通过从活动 NameNode 复制最新的命名空间快照来引导备用 NameNode 的存储目录。在首次配置 HA 集群时使用此功能。选项 -force 或 -nonInteractive 的含义与 namenode -format 命令中描述的相同。-skipSharedEditsCheck 选项会跳过编辑检查,该检查确保在共享目录中已有足够的编辑,以便从活动节点上的最后一个检查点启动。
-recover [-force] 恢复损坏文件系统上的丢失元数据。有关详细信息,请参阅 HDFS 用户指南
-metadataVersion 验证配置的目录是否存在,然后打印软件和映像的元数据版本。

运行 namenode。有关升级和回滚的更多信息,请参阅 升级回滚

nfs3

用法:hdfs nfs3

此命令启动 NFS3 网关,以配合 HDFS NFS3 服务 使用。

portmap

用法:hdfs portmap

此命令启动 RPC 端口映射,以配合 HDFS NFS3 服务 使用。

secondarynamenode

用法:hdfs secondarynamenode [-checkpoint [force]] | [-format] | [-geteditsize]

COMMAND_OPTION 描述
-checkpoint [force] 如果 EditLog 大小 >= fs.checkpoint.size,则对 SecondaryNameNode 进行检查点。如果使用 force,则无论 EditLog 大小如何,都进行检查点。
-format 在启动期间格式化本地存储。
-geteditsize 打印 NameNode 上未检查点的交易数量。

运行 HDFS 辅助 NameNode。有关更多信息,请参阅 辅助 NameNode

storagepolicies

用法

  hdfs storagepolicies
      [-listPolicies]
      [-setStoragePolicy -path <path> -policy <policy>]
      [-getStoragePolicy -path <path>]
      [-unsetStoragePolicy -path <path>]
      [-satisfyStoragePolicy -path <path>]
      [-isSatisfierRunning]
      [-help <command-name>]

列出所有/获取/设置/取消设置存储策略。有关更多信息,请参阅 HDFS 存储策略文档

zkfc

用法:hdfs zkfc [-formatZK [-force] [-nonInteractive]]

COMMAND_OPTION 描述
-formatZK 格式化 Zookeeper 实例。-force:如果 znode 存在,则格式化 znode。-nonInteractive:如果 znode 存在,则格式化 znode 会中止,除非指定了 -force 选项。
-h 显示帮助

此命令启动 Zookeeper 故障转移控制器进程,以配合 HDFS HA with QJM 使用。

调试命令

帮助管理员调试 HDFS 问题的有用命令。这些命令仅供高级用户使用。

verifyMeta

用法:hdfs debug verifyMeta -meta <metadata-file> [-block <block-file>]

COMMAND_OPTION 描述
-block block-file 可选参数,用于指定数据节点本地文件系统中块文件的绝对路径。
-meta metadata-file 数据节点本地文件系统中元数据文件的绝对路径。

验证 HDFS 元数据和块文件。如果指定了块文件,我们将验证元数据文件中的校验和是否与块文件匹配。

computeMeta

用法:hdfs debug computeMeta -block <block-file> -out <output-metadata-file>

COMMAND_OPTION 描述
-block block-file 数据节点本地文件系统中块文件的绝对路径。
-out output-metadata-file 输出元数据文件的绝对路径,用于存储块文件中的校验和计算结果。

从块文件中计算 HDFS 元数据。如果指定了块文件,我们将从块文件中计算校验和,并将其保存到指定的输出元数据文件中。

注意:请自行承担风险!如果块文件已损坏,并且您覆盖了其元文件,它将在 HDFS 中显示为“良好”,但您无法读取数据。仅在最后手段时使用,并且当您 100% 确定块文件良好时使用。

recoverLease

用法:hdfs debug recoverLease -path <path> [-retries <num-retries>]

COMMAND_OPTION 描述
[-path path] 要恢复租约的 HDFS 路径。
[-retries num-retries] 客户端将重试调用 recoverLease 的次数。默认重试次数为 1。

恢复指定路径上的租约。该路径必须位于 HDFS 文件系统上。默认重试次数为 1。

verifyEC

用法:hdfs debug verifyEC -file <file>

COMMAND_OPTION 描述
[-file EC-file] 要验证的 HDFS EC 文件。

验证纠删码文件中纠删编码的正确性。

dfsadmin 与 ViewFsOverloadScheme

用法:hdfs dfsadmin -fs <child fs mount link URI> <dfsadmin command options>

COMMAND_OPTION 描述
-fs child fs mount link URI 这是 ViewFS 世界中子文件系统的逻辑挂载链接路径。此 URI 通常以 fs.defaultFS 为前缀形成 src 挂载链接。请注意,这不是实际的子文件系统 uri,而是一个指向实际子文件系统的逻辑挂载链接 uri

示例命令用法:hdfs dfsadmin -fs hdfs://nn1 -safemode enter

在 ViewFsOverloadScheme 中,我们可能有多个子文件系统作为挂载点映射,如 ViewFsOverloadScheme 指南 中所示。此处 -fs 选项是 dfsadmin 支持的一个可选通用参数。当用户希望对某个子文件系统执行命令时,他们需要将该文件系统挂载映射链接 URI 传递给 -fs 选项。下面我们来看一个示例挂载链接配置和 dfsadmin 命令。

挂载链接

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://MyCluster1</value>
</property>

<property>
  <name>fs.viewfs.mounttable.MyCluster1./user</name>
  <value>hdfs://MyCluster2/user</value>
  <!-- mount table name : MyCluster1
       mount link mapping: hdfs://MyCluster1/user --> hdfs://MyCluster2/user
       mount link path: /user
       mount link uri: hdfs://MyCluster1/user
       mount target uri for /user: hdfs://MyCluster2/user -->
</property>

如果用户希望与 hdfs://MyCluster2/ 通信,则他们可以传递 -fs 选项(-fs hdfs://MyCluster1/user),因为 /user 已映射到集群 hdfs://MyCluster2/user,dfsadmin 将传递的(-fs hdfs://MyCluster1/user)解析为目标文件系统(hdfs://MyCluster2/user)。通过这种方式,用户可以访问 ViewFsOverloadScheme 中的所有 hdfs 子文件系统。如果没有提供 -fs 选项,则它将尝试连接到配置的 fs.defaultFS 集群(如果集群使用 fs.defaultFS uri 运行)。