hadoop HDFS command 指南

本文是官方文档的翻译  本文固定链接是: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

*

沪ICP备14014813号-2

沪公网安备 31010802001379号