本文是官方文档的翻译 本文固定链接是:https://www.askmac.cn/archives/hadoop-hdfs-user-guide.html
原文链接:http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html
1.综述:
所有的HDFS 命令被 bin/hdfs脚本调用,运行这个脚本不带任何参数会打印所有命令。
用法:hdfs [SHELL_OPTIONS] COMMAND [GENERIC_OPTIONS] [COMMADN_OPTIONS]
hadoop有选项解析框架,采用解析通用选项和运行类。
命令选项 | 描述 |
–config–loglevel | 这个命令设置shell选项,详细文档可以参考手动命令页面(Hadoop Commands Reference) |
GENERIC_OPTIONS | 这个命令设置选项支持多个命令 |
COMMAND COMMAND_OPTIONS | 下列各节中描述的各种命令 |
2.用户命令:
hadoop集群用户的常用命令
2.1 classpath
用法:hdfs classpath
打印得到hadoop jar和所需类库的class路径
2.2 dfs
用法:hdfs dfs [COMMAND [COMMAND_OPTIONS]]
在hadoop支持下在文件系统上运行一个文件系统命令。各种COMMAND_OPTIONS可以在File System Shell Guide(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-common/FileSystemShell.html)中找到
2.3 fetchdt
用法:hdfs fetchdt [–webservice <namenode_http_addr>] <path>
命令选项 | 描述 |
–webservice https_address | 使用http协议而不是RPC |
filename | 存储token的文件名 |
2.4 fsck
用法:
hdfs fsck <path>
[-list-corruptfileblocks |
[-move | -delete | -openforwrite]
[-files [-blocks [-locations | -racks]]]
[-includeSnapshots]
命令选项 | 描述 |
patch | 从此路径开始检查 |
-delete | 删除损坏的文件 |
-files | 打印出那些被检查过的文件 |
-files-blocks | 打印出块报告 |
-files-blocks-locations | 为每个块打印出位置 |
-files-blocks-racks | 为data-node位置打印出网络拓扑 |
-includeSnapshots | 包含快照数据,如果给定的路径中包含snapshottable目录,或者在下面有snapshottable目录。 |
-list-corruptfileblocks | 打印丢失块的列表和他们属于的文件 |
-move | 移动损坏的文件到/lost+found |
-openforwrite | 打印那些write打开的文件 |
2.5 getconf
用法:
hdfs getconf -namenodes
hdfs getconf -secondaryNameNodes
hdfs getconf -backupNodes
hdfs getconf -includeFile
hdfs getconf -excludeFile
hdfs getconf -nnRpcAddresses
hdfs getconf -confKey [key]
命令选项 | 描述 |
-namenodes | 得到集群中namenodes的列表 |
– secondaryNameNodes | 得到集群中secondaryNameNodes的列表 |
-backupNodes | 得到集群中backupNodes的列表 |
-includeFile | 得到定义那些datanodes可以加入集群的文件的路径 |
-excludeFile | 得到定义datanodes被集群排除在外(decommissioned)的文件的路径 |
-nnRpcAddresses | 得到namenode的rps地址 |
– confKey | 从配置中得到一个指定的keey |
从配置目录中获取配置信息,后期处理。
2.6 groups
用法:hdfs groups [username …]
返回组信息,给出1个或多个用户名。
2.7 lsSnapshottableDir
用法:hdfs lsSnapshottableDir [-help]
命令选项 | 描述 |
-help | 打印help信息 |
得到snapshottable目录的列表。当使用超级用户运行的时候,它会返回所有的snapshottable目录。否则它返回当前用户所拥有的目录
2.8 jmxget
用法:hdfs jmxget [-localVM ConnectorURL | -port port | -server mbeanserver | -service service]
命令选项 | 描述 |
-help | 打印help信息 |
-localVM ConnectorURL | 连接到同一台机器上的VM(虚拟机) |
-port mbean 服务器端口 | 指定mbean服务器端口,如果缺少它会尝试连接MBean服务器,在相同VM中 |
-server | 指定jmx服务,默认是Datanode或nameNode |
从一个服务中转储出JMX信息
2.9 oev
用法:hdfs oev [OPTIONS] -i INPUT_FILE -o OUTPUT_FILE
需要命令行参数:
命令选项 | 描述 |
-i,–inputFile 参数 | 为进程编辑文件,xml(不区分大小写)意味着是XML拓展方式,任何其他的文件名是二进制格式 |
-o,–outputFile 参数 | 输出文件名。如果指定的文件存在,它会覆盖,文件格式由-p选项决定 |
可选命令行参数:
命令选项 | 描述 |
-f,–fix-txids | 在输入的时候重编号事务ID,这样就没有gap或者无效的事务ID |
-h,–help | 显示用法选项然后退出 |
-r,–ecover | 当读取二进制edit日志时,使用恢复模式。这将给你跳过编辑日志的损坏部分的机会 |
-p,–processor 参数 | 选择应用对image文件处理器类型,目前支持的处理器:二进制(原生Hadoop使用二进制格式),XML(默认是XML格式),统计(打印edit文件的统计信息) |
-v,–verbose | 更详细的输出,打印输入和输出的文件名,用于处理器写入到文件,并输出到屏幕。在大的图像文件,这将大大增加处理时间(默认是false)。 |
hadoop离线edits查看器
2.10 oiv
用法:hdfs oiv [OPTIONS] -i INPUT_FILE
需要命令行参数:
命令选项 | 描述 |
-i,–inputFile 参数 | 为程序编辑文件,XML(不区分大小写)扩展方式为XML格式,任何其他文件名为二进制格式 |
可选命令行参数:
命令选项 | 描述 |
-h,–help | 显示用法信息然后退出 |
-o,–outputFile 参数 | 输出文件名。如果指定的文件存在,它会覆盖,文件格式由-p选项决定 |
-p,–processor 参数 | 选择应用对image文件处理器类型,目前支持的处理器:二进制(原生Hadoop使用二进制格式),XML(默认是XML格式),统计(打印edit文件的统计信息) |
hadoop为新image文件提供的,离线image视图
2.11 oiv_legacy
用法:hdfs oiv_legacy [OPTIONS] -i INPUT_FILE -o OUTPUT_FILE
命令选项 | 描述 |
-h,–help | 显示用法信息然后退出 |
-i,–inputFile 参数 | 为程序编辑文件,XML(不区分大小写)扩展方式为XML格式,任何其他文件名为二进制格式 |
-o,–outputFile 参数 | 输出文件名。如果指定的文件存在,它会覆盖,文件格式由-p选项决定 |
hadoop老版本离线image视图
2.22 snapshotDiff
用法:hdfs snapshotDiff <path> <fromSnapshot> <toSnapshot>
确定HDFS 快照之间的差异。详细信息可以参见:
(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HdfsSnapshots.html#Get_Snapshots_Difference_Report)
2.23 version
用法:hdfs version
打印版本
3.管理员命令
对hadoop集群管理员很有帮助的命令。
3.1 balancer
用法:
hdfs balancer
[-threshold <threshold>]
[-policy <policy>]
[-exclude [-f <hosts-file> | <comma-separated list of hosts>]]
[-include [-f <hosts-file> | <comma-separated list of hosts>]]
[-idleiterations <idleiterations>]
命令选项 | 描述 |
-policy <policy> | datanode(默认):如果每个datanode平衡,整个集群是均衡的blockpool:在每个datanode上的每个块池是平衡的,整个集群是平衡的 |
-threshold <threshold> | 磁盘容量百分比。这将覆盖默认阈值。 |
-exclude -f <hosts-file> | <comma-separated list of hosts> | 在使用balancer进行平衡的时候排除指定的datanode |
-include -f <hosts-file> | <comma-separated list of hosts> | 在使用balancer进行平衡的时候指定的平衡的datanode |
-idleiterations <iterations> | 退出前的最大空闲迭代次数。这将覆盖默认的idleiterations(5)。 |
运行一个集群平衡工具。管理员可以简单的按下ctrl+c来停止平衡进程。
注意blockpool策略比datanode策略来说更精确
3.2 cacheadmin
用法:
hdfs cacheadmin -addDirective -path <path> -pool <pool-name> [-force] [-replication <replication>] [-ttl <time-to-live>]
更多信息可以参考(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/CentralizedCacheManagement.html#cacheadmin_command-line_interface)
3.3 crypto
用法:
hdfs crypto -createZone -keyName <keyName> -path <path>
hdfs crypto -help <command-name>
hdfs crypto -listZones
更多信息参考:
http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/TransparentEncryption.html#crypto_command-line_interface
3.4 datanode
用法:hdfs datanode [-regular | -rollback | -rollingupgrace rollback]
命令选项 | 描述 |
-regular | datanode普通启动(默认) |
-rollbak | 回滚datanode到先前的版本。这个需要在停止datanode和部署之前版本hadoop之后使用。 |
-rollingupgrade rollbak | 回滚滚动升级操作。 |
运行一个HDFS datanode
3.5 dfsadmin
用法:
hdfs dfsadmin [GENERIC_OPTIONS]
[-report [-live] [-dead] [-decommissioning]]
[-safemode enter | leave | get | wait]
[-saveNamespace]
[-rollEdits]
[-restoreFailedStorage true |false |check]
[-refreshNodes]
[-setQuota <quota> <dirname>…<dirname>]
[-clrQuota <dirname>…<dirname>]
[-setSpaceQuota <quota> <dirname>…<dirname>]
[-clrSpaceQuota <dirname>…<dirname>]
[-setStoragePolicy <path> <policyName>]
[-getStoragePolicy <path>]
[-finalizeUpgrade]
[-rollingUpgrade [<query> |<prepare> |<finalize>]]
[-metasave filename]
[-refreshServiceAcl]
[-refreshUserToGroupsMappings]
[-refreshSuperUserGroupsConfiguration]
[-refreshCallQueue]
[-refresh <host:ipc_port> <key> [arg1..argn]]
[-reconfig <datanode |…> <host:ipc_port> <start |status>]
[-printTopology]
[-refreshNamenodes datanodehost:port]
[-deleteBlockPool datanode-host:port blockpoolId [force]]
[-setBalancerBandwidth <bandwidth in bytes per second>]
[-allowSnapshot <snapshotDir>]
[-disallowSnapshot <snapshotDir>]
[-fetchImage <local directory>]
[-shutdownDatanode <datanode_host:ipc_port> [upgrade]]
[-getDatanodeInfo <datanode_host:ipc_port>]
[-triggerBlockReport [-incremental] <datanode_host:ipc_port>]
[-help [cmd]]
命令选项 | 描述 |
-report [-live] [-dead] [-decommissioning] | 报告基本的文件系统信息和统计信息。可选的标签可以用来过滤显示的数据节点列表 |
-safemode enter|leave|get|wait | 安全模式维护命令,安全模式是namenode的一个状态1.不允许变更命名空间(只读)2.不复制和删除数据块。在namenode启动时自动进入安全模式,当配置的最小比例块满足最小复制条件时,自动的离开安全模式。可以手动的进入安全模式,此时只能手动关闭安全模式。 |
-saveNamespace | 将当前命名空间保存到存储目录中和重置edits日志。需要安全模式。 |
-rollEdits | 在活动的namenode 上滚动edit日志 |
-restoreFailedStorage true|false|check | 此选项将打开/关闭,自动尝试恢复失败的存储复制。如果一个失败的存储再一次可用,系统将在检查点过程中尝试重建edits 和/或 fsimage.’check’选项放回当前配置。 |
-refreshNodes | 重新读取datanodes的最新主机配置,那些允许连接到Namenode和那些应该被剔除或重新加进集群的主机。 |
-setQuota<quota><dirname>…<dirname> | 详细参考HDFS Quotas Guide |
-clrQuota <dirname>…<dirname> | 详细参考HDFS Quotas Guide |
-setSpaceQuota<quota><dirname>…<dirname> | 详细参考HDFS Quotas Guide |
-clrSpaceQuota <dirname>…<dirname> | 详细参考HDFS Quotas Guide |
-setStoragePolicy<path> <policyName> | 为文件或者路径设置存储策略 |
-getStoragePolicy <path> | 得到文件或者路径的存储策略 |
-finalizeUpgrade | 完成HDFS升级。datanode删除以前版本的工作目录,然后是NameNode也这样做。这样就完成了升级过程。 |
-rollingUpgrade [<query>|<prepare>|<finalize>] | 详细参考Rolling Upgrade document |
-metasave filename | 保存namenode的主要数据结构到hadoop.log.dir指定的路径下的filename中。filename存在将覆盖,filename将包含下面每一行1. datanode和namenode的心跳2.等待复制的块3.当前被复制的块4.等待被删除的块 |
-refreshServiceAcl | 重载服务级别的认证策略文件 |
-refreshUserToGroupsMappings | 刷新用户-组映射 |
-refreshSuperUserGroupsConfiguration | 刷新超级用户代理组映射 |
-refreshCallQueue | 刷新来自配置中的调用(call)队列 |
-refresh<host:ipc_port> <key> [arg1..argn] | 触发一个 运行时刷新指定<host:ipc_port>上<key>资源。其他参数在此之后发送给主机。 |
-reconfig<datanode |…> <host:ipc_port> <start|status> | 启动重新配置或获得正在进行的重新配置的状态。第二个参数指定节点类型。目前,只有重装DataNode的配置支持。 |
-printTopology | 从namenode答应它们节点的树形结构 |
-refreshNamenodesdatanodehost:port | 对于给定的datanode,重载配置文件,停止删除块池服务,然后开启新块池服务。 |
-deleteBlockPooldatanode-host:port blockpoolId [force] | 如果强行通过,在给定节点删除给出blockpool ID的块池目录以及它的内容,否则只有空目录删除。如果datanode任然为这个快池服务,命令将会失败。参考refreshNamenodes在一个datanode上关闭块池服务 |
-setBalancerBandwidth<bandwidth in bytes per second> | 调节在HDFS块平衡时每个datanode使用的网络带宽。< bandwidth >是每个datanode每秒的最大的值。这个值覆盖dfs,balance.bandwidthPerSec 参数。注意:这个新值不是一个持久的值。 |
-allowSnapshot <snapshotDir> | 允许快照目录被创建。如果操作成功完成,这个目录将成为snapshottable.参考HDFS Snapshot 文档来获得详细信息 |
-disallowSnapshot <snapshotDir> | 不允许快照目录被创建。在不允许快照之前,所有的快照目录必须被删除。参考HDFS Snapshot 文档来获得详细信息 |
-fetchImage <local directory> | 从NameNode中下载最新的fsimage,然后保存到指定的本地路径。 |
-shutdownDatanode <datanode_host:ipc_port> [upgrade] | 提交一个关闭请求给datanode。详细参考Rolling Upgrade document |
-getDatanodeInfo <datanode_host:ipc_port | 获得指定datanode的信息。详细参考Rolling Upgrade document |
-triggerBlockReport[-incremental] <datanode_host:ipc_port> | 为指定的datanode触发一个块报告。如果指定了’incremental’,它将是增量的,否则它将是完整的报告。 |
-help | 显示指定命令的帮助,如果没有指定显示所有命令的。 |
运行一个HDFS dfsadmin客户端
3.6 haadamin
用法:
hdfs haadmin -checkHealth <serviceId>
hdfs haadmin -failover [–forcefence] [–forceactive] <serviceId> <serviceId>
hdfs haadmin -getServiceState <serviceId>
hdfs haadmin -help <command>
hdfs haadmin -transitionToActive <serviceId> [–forceactive]
hdfs haadmin -transitionToStandby <serviceId
命令选项 | 描述 |
-checkHealth | 检查指定namenode的健康 |
-failover | 在两个NameNodes之前进行故障转移 |
-getServiceState | 确定给定的NameNode是活动的还是备份的 |
-transitionToActive | 变化给定的NameNode到活动的(警告:没有防护措施) |
-transitionToStandby | 变化给定的NameNode到备份的(警告:没有防护措施) |
参考HDFS HA with NFS 或 HDFS HA with QJM来获得更多的命令
(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html#Administrative_commands)
3.7 journalnode
用法:
hdfs journalnode
这个命令启动了一个journalnode,使用参考HDFS HA with QJM(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html#Administrative_commands)
3.8 mover
用法:
hdfs mover [-p <files/dirs> | -f <local file name>]
命令选项 | 描述 |
-f <local file> | 指定用于迁移的一个本地文件来容纳一个 HDFS 文件/目录列表 |
-p <files/dirs> | 指定要迁移的空间分隔的HDFS文件/目录列表。 |
运行数据迁移工具。更多参考(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/ArchivalStorage.html#Mover_-_A_New_Data_Migration_Tool)
注意,如果-p和-f选项都忽略,默认的路径是根目录。
3.9 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 <downgrade |rollback> ] |
[-finalize] |
[-importCheckpoint] |
[-initializeSharedEdits] |
[-bootstrapStandby] |
[-recover [-force] ] |
[-metadataVersion ]
-metadataVersion 动作和第一次格式化类似:
命令选项 | 描述 |
-backup | 开启备份节点 |
-checkpoint | 开启检查点节点 |
-format[-clusterid cid] [-force] [-nonInteractive] | 格式化指定的NameNode。它开启在NameNode,格式化它然后关闭。如果名称目录存在,使用-force选项格式化。-nonInteractive选项(默认)在目录存在时会中断格式化,除非-force选项指定。 |
-upgrade[-clusterid cid] [-renameReserved <k-v pairs>] | 在分布了新版本的hadoop之后,namenode可以使用upgrade选项启动。 |
-upgradeOnly [-clusterid cid] [-renameReserved <k-v pairs>] | 升级指定的namenode,然后关闭它。 |
-rollback | 回退NameNode到之前的版本。这个命令应该在关闭集群和分布了旧版本的hadoop之后使用。 |
-rollingUpgrade <downgrade|rollback|started> | 参考Rolling Upgrade document获得详细信息 |
-finalize | 完成后(finalize)会从文件系统移除之前的状态。最近的一次升级将成为当前。rollback选项将不再可用。在完成之后,它会关闭nameNode. |
-importCheckpoint | 从一个检查点路径装载image,然后保存它到当前的。检查点路径从fs.checkpoint.dir属性获取到 |
-initializeSharedEdits | 格式化一个新的共享edits目录,然后拷贝进充足的edit日志段,这样备用NameNode可以启动 |
-bootstrapStandby | 允许备用NameNode上存储目录被从活动NameNode上拷贝的最命名空间快照引导。这个用于当第一次HA集群配置的时候。 |
-recover [-force] | 在一个损坏的文件系统上修复丢失的元数据。详细参考HDFS User Guide |
-metadataVersion | 验证配置的路径存在,然后答应软件和image的元数据版本 |
运行namenode。更多关于升级,回退和最后完成,参见Upgrade_and_Rollback
(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html#Upgrade_and_Rollback)
3.10 nfs
用法:
hdfs nfs3
这个命令开启的NFS3网关,使用参考HDFS NFS3 Service.
(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HdfsNfsGateway.html#Start_and_stop_NFS_gateway_service)
4.11 portmap
用法:hdfs portmap
这个命令开启的一个RPC端口映射,使用参考HDFS NFS3 Service.
(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HdfsNfsGateway.html#Start_and_stop_NFS_gateway_service)
3.12 secondarynamenode
用法:
hdfs secondarynamenode [-checkpoint [force]] | [-format] | [-geteditsize]
命令参数 | 描述 |
-checkpoint [force] | 检查点secondarynamenode,如果editlogs大小>=fs.checkpoint.size。如果force使用,无论editlog大小都进行检查点。 |
-format | 在启动的时候格式化本地存储 |
-geteditsize | 打印出在NameNode还未检查点的事务的数量。 |
更多HDFS secondarynamenode 信息,参考secondary namenode(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html#Secondary_NameNode)
3.13 storagepolicies
用法:
hdfs storagepolicies
列出所有存储策略,更多信息请参见Storage Types and Storage Policies(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/ArchivalStorage.html)
3.14 zkfc
用法:
hdfs zkfc [-formatZK [-force] [-nonInteractive]]
参数选项 | 描述 |
-formatZK | 格式化 Zookeeper 实例 |
-h | 列出帮助 |
这个命令开启了一个Zookeeper故障转移控制进程,更多使用参考HDFS HA with QJM.
(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html#Administrative_commands)
4:调试命令(debug)
一些有用的命令可以帮助管理员调试HDFS问题,例如验证块文件和调用recoverLease
4.1 verify
用法:
hdfs debug verify [-meta <metadata-file>] [-block <block-file>]
命令选项 | 描述 |
-blockblock-file | 参数选项指定在datanode上块文件在本地文件系统的绝对路径 |
-meta metadata-file | datanode本地文件系统的元数据文件的绝对路径。 |
验证HDFS元数据和块文件,如果一个块文件被指定,我们将验证块文件和其在元数据中的校验值。
4.2 recoverLease
用法:
hdfs debug recoverLease [-path <path>] [-retries <num-retries>]
命令选项 | 描述 |
[-path path] | recoverLease的HDFS路径 |
[-retries num-retries] | 在重新调用recoverLease的次数。重试默认值是1 |
这个指定的路径必须在HDFS文件系统上,默认重试值是1.
Comment