概述
所有的HDFS命令都调用bin/hdfs脚本文件,如果运行hdfs脚本没有带任何参数的话,则打印所有命令的描述。
使用: hdfs [SHELL_OPTIONS] COMMAND [GENERIC_OPTIONS] [COMMAND_OPTIONS]
Hadoop是一个参数解析框架,采用解析泛型选项以及运行类。
命令参数 | 描述 |
---|---|
--config
|
指定一个默认的配置文件目录,默认值是: ${HADOOP_PREFIX}/conf .
重载Log级别。有效的日志级别包含:FATAL, ERROR, WARN, INFO, DEBUG, and TRACE。默认是INFO。 |
GENERIC_OPTIONS | YARN支持表A的通用命令项。 |
COMMAND COMMAND_OPTIONS | YARN分为用户命令和管理员命令。 |
表A:
通用项 | Description |
---|---|
-archives <comma separated list of archives> |
用逗号分隔计算中未归档的文件。 仅仅针对JOB。 |
-conf <configuration file> |
制定应用程序的配置文件。 |
-D <property>=<value> |
使用给定的属性值。 |
-files <comma separated list of files> |
用逗号分隔的文件,拷贝到Map reduce机器,仅仅针对JOB |
-jt <local> or <resourcemanager:port> |
指定一个ResourceManager. 仅仅针对JOB。 |
-libjars <comma seperated list of jars> |
将用逗号分隔的jar路径包含到classpath中去,仅仅针对JOB。 |
用户命令:
对于Hadoop集群用户很有用的命令:
dfs
使用: hdfs dfs [COMMAND [COMMAND_OPTIONS]]
在hadoop中运行支持文件系统的命令。各种[COMMAND_OPTIONS]命令可以查看Hadoop之文件系统Shell 。
fetchdt
使用: hdfs fetchdt [--webservice <namenode_http_addr>] <path>
命令参数 | 描述 |
---|---|
--webservice https_address |
使用HTTP端口代替RPC |
fileName | 存储token的文件名。 |
从NameNode获取DelegationToken(授权标识)。
hdfs脚本支持fetchdt命令来获取DelegationToken(授权标识),并存储在本地文件系统的一个文件中。这样“非安全”的客户端可以使用该标识去访问受限的服务器(例如NameNode)。可以采用RPC或HTTPS(over Kerberos)方式获取该标示,在获取之前需要提交Kerberos凭证(运行kinit来获得凭证)。当你获得授权标识后,通过指定环境变量HADOOP_TOKEN_FILE_LOCATION为授权标识文件名,你就可以运行HDFS命令,而不需要Kerberros凭证了。
fsck
使用:
hdfs fsck <path> [-list-corruptfileblocks | [-move | -delete | -openforwrite] [-files [-blocks [-locations | -racks]]] [-includeSnapshots]
命令选项 | 描述 |
---|---|
path | 指定诊断的路径(既可以是文件也可以是目录) |
-delete |
删除损坏的文件。 |
-files |
打印被诊断的文件。 |
-files -blocks |
打印被诊断的文件的块信息。 |
-files -blocks -locations |
打印每个块的位置信息。 |
-files -blocks -racks |
打印数据块的网络拓扑结构 |
-includeSnapshots |
如果给定的路径包含快照的路径或者快照在该路径下,则包含快照的数据。 |
-list-corruptfileblocks |
打印丢失的块列表以及块所属的文件。 |
-move |
移动损坏的文件到/lost+found目录。 |
-openforwrite |
打印正在被写入的文件。 |
诊断文件系统健康状态的工具,能够帮助发现丢失的文件或数据块。
示例:
[[email protected] bin]$ hdfs fsck /test/fish -files -blocks Connecting to namenode via http://hadoopcluster78:50070 FSCK started by hadoop (auth:SIMPLE) from /10.0.1.78 for path /test/fish at Fri Aug 14 12:01:50 CST 2015 /test/fish <dir> /test/fish/box_log_20150721.txt 2018468864 bytes, 16 block(s): OK 0. BP-701099497-10.0.1.78-1430101367576:blk_1073749326_8927 len=134217728 repl=3 1. BP-701099497-10.0.1.78-1430101367576:blk_1073749327_8928 len=134217728 repl=3 2. BP-701099497-10.0.1.78-1430101367576:blk_1073749328_8929 len=134217728 repl=3 3. BP-701099497-10.0.1.78-1430101367576:blk_1073749329_8930 len=134217728 repl=3 4. BP-701099497-10.0.1.78-1430101367576:blk_1073749330_8931 len=134217728 repl=3 5. BP-701099497-10.0.1.78-1430101367576:blk_1073749331_8932 len=134217728 repl=3 6. BP-701099497-10.0.1.78-1430101367576:blk_1073749332_8933 len=134217728 repl=3 7. BP-701099497-10.0.1.78-1430101367576:blk_1073749333_8934 len=134217728 repl=3 8. BP-701099497-10.0.1.78-1430101367576:blk_1073749334_8935 len=134217728 repl=3 9. BP-701099497-10.0.1.78-1430101367576:blk_1073749335_8936 len=134217728 repl=3 10. BP-701099497-10.0.1.78-1430101367576:blk_1073749336_8937 len=134217728 repl=3 11. BP-701099497-10.0.1.78-1430101367576:blk_1073749337_8938 len=134217728 repl=3 12. BP-701099497-10.0.1.78-1430101367576:blk_1073749338_8939 len=134217728 repl=3 13. BP-701099497-10.0.1.78-1430101367576:blk_1073749339_8940 len=134217728 repl=3 14. BP-701099497-10.0.1.78-1430101367576:blk_1073749340_8941 len=134217728 repl=3 15. BP-701099497-10.0.1.78-1430101367576:blk_1073749341_8942 len=5202944 repl=3 Status: HEALTHY Total size: 2018468864 B Total dirs: 1 Total files: 1 Total symlinks: 0 Total blocks (validated): 16 (avg. block size 126154304 B) Minimally replicated blocks: 16 (100.0 %) Over-replicated blocks: 0 (0.0 %) Under-replicated blocks: 0 (0.0 %) Mis-replicated blocks: 0 (0.0 %) Default replication factor: 3 Average block replication: 3.0 Corrupt blocks: 0 Missing replicas: 0 (0.0 %) Number of data-nodes: 4 Number of racks: 1 FSCK ended at Fri Aug 14 12:01:50 CST 2015 in 1 milliseconds The filesystem under path '/test/fish' is HEALTHY
getconf
使用:
hdfs getconf -namenodes hdfs getconf -secondaryNameNodes hdfs getconf -backupNodes hdfs getconf -includeFile hdfs getconf -excludeFile hdfs getconf -nnRpcAddresses hdfs getconf -confKey [key]
命令选项 | 描述 |
---|---|
-namenodes |
在集群中获取NameNode列表。 |
-secondaryNameNodes |
在集群中获取secondaryNameNode列表 |
-backupNodes |
在集群中获取backup node节点列表。 |
-includeFile |
获取dfs.hosts配置的值,该值定义了哪些DataNode加入到集群。 |
-excludeFile |
获取dfs.hosts.exclude配置的值,该值定义了哪些DataNode排除在集群之外。 |
-nnRpcAddresses |
获取Namenode的RPC地址 |
-confKey [key] |
获取配置文件中的值。 |
从配置文件目录获取配置信息。
示例:
[[email protected] bin]$ hdfs getconf -namenodes hadoopcluster78 hadoopcluster79 [[email protected] bin]$ hdfs getconf -nnRpcAddresses hadoopcluster78:8020 hadoopcluster79:8020 [[email protected] bin]$ hdfs getconf -confKey dfs.webhdfs.enabled true
groups
使用: hdfs groups [username ...]
返回给定的一个或多个用户组信息。
[[email protected] bin]$ hdfs groups hadoop hadoop : clustergroup //hadoop属于clustergroup组
lsSnapshottableDir
使用: hdfs lsSnapshottableDir [-help]
命令选项 | 描述 |
---|---|
-help |
打印帮助 |
获取快照目录的列表。当这是运行在超级用户,它返回所有的snapshottable目录。否则它返回当前用户所拥有的目录。
jmxget
使用: hdfs jmxget [-localVM ConnectorURL | -port port | -server mbeanserver | -service service]
命令选项 | 描述 |
---|---|
-help |
打印帮助信息 |
-localVM ConnectorURL |
连接到同一台机器上的虚拟机 |
-port mbean server port |
指定的Mbean服务端口,如果找不到,则尝试连接本地的虚拟机。 |
-service |
指定JMX服务,DataNode 或者 NameNode。 |
从服务中Dump JMX信息。
示例:
[[email protected] bin]$ hdfs jmxget -service NameNode init: server=localhost;port=;service=NameNode;localVMUrl=null Domains: Domain = JMImplementation Domain = com.sun.management Domain = java.lang Domain = java.nio Domain = java.util.logging MBeanServer default domain = DefaultDomain MBean count = 22 Query MBeanServer MBeans: List of all the available keys: 15/08/18 16:26:37 INFO util.ExitUtil: Exiting with status 0
oev
使用: hdfs oev [OPTIONS] -i INPUT_FILE -o OUTPUT_FILE
必选的命令行参数:
命令参数 | 描述 |
---|---|
-i ,--inputFile arg |
需要处理的edits file。以xml扩展的就是xml格式的,其他的都是二进制格式的。 |
-o ,--outputFile arg |
输出文件的名字,如果指定的输出文件存在,则会被覆盖,文件的格式由-p选项定义。 |
可选的命令行参数:
命令参数 | 描述 |
---|---|
-f ,--fix-txids |
s |
-h ,--help |
打印使用的帮助信息。 |
-r ,--ecover |
当读取二进制编辑日志时,使用recovery模式。这将给你机会跳过编辑日志的损坏部分。 |
-p ,--processor arg
|
选择应用于image file处理器的类型,当前支持的处理有:binary (hadoop使用的二进制类型), xml (默认XML格式), stats (打印关于edits file的统计数据) |
-v ,--verbose |
打印更相信的输出,包含输入和输出的文件名,处理器写入到文件,并打印在屏幕上。如果是大的image file文件,会大大的加大处理时间。(默认是false) |
Hadoop edit文件离线查看器。
oiv
使用: hdfs oiv [OPTIONS] -i INPUT_FILE
hdfs oiv_legacy [OPTIONS] -i INPUT_FILE -o OUTPUT_FILE 该命令属于老版本,无法使用
必选的命令行参数:
命令参数 | 描述 |
---|---|
-i ,--inputFile arg
|
处理edits file,xml (区分大小写) ,二进制格式。 |
可选的命令行参数:
命令参数 | 描述 |
---|---|
-h ,--help
|
打印使用信息和退出。 |
-o ,--outputFile arg
|
文件的输出名,如果指向的文件存在,将覆盖它,文件的格式由-p参数决定。 |
-p ,--processor arg
|
选择应用于image file处理器的类型,当前支持的处理有:binary (hadoop使用的二进制类型), xml (默认XML格式), stats (打印关于edits file的统计数据) |
Hadoop新的离线Image文件查看器。
snapshotDiff
使用: hdfs snapshotDiff <path> <fromSnapshot> <toSnapshot>
确认两个HDFS快照版本的差异。
管理员命令
下列这些命令对hadoop集群的管理员是非常有用的。
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 (default) :如果集群每个DataNode节点是平衡的,运行该命令将各个DataNode均衡。
|
-threshold <threshold> |
硬盘容量的百分比,默认的阀值会被覆盖。 |
-exclude -f <hosts-file> | <comma-separated list of hosts> |
balancer不包括指定的数据节点,用逗号分隔 |
-include -f <hosts-file> | <comma-separated list of hosts> |
balancer指定的数据节点,用逗号分隔 |
-idleiterations <iterations> |
退出前的最大空闲迭代次数,默认值是5。 |
balance工具通常用于平衡hadoop集群中各datanode中的文件块分布,以避免出现部分datanode磁盘占用率高的问题 。管理员可以按Ctrl-C停止Balancer进程。
请注意,blockpool策略比datanode策略更严格。
cacheadmin
使用: hdfs cacheadmin -addDirective -path <path> -pool <pool-name> [-force] [-replication <replication>] [-ttl <time-to-live>]
datanode
使用: hdfs datanode [-regular | -rollback | -rollingupgrace rollback]
命令选项 | 描述 |
---|---|
-regular |
正常的DataNode启动(默认) |
-rollback |
回滚datanode到上一个版本。. |
-rollingupgrade rollback |
回滚更新操作。 |
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]]
COMMAND_OPTION | Description |
---|---|
-report [-live] [-dead] [-decommissioning] |
报告文件系统的信息和统计,其他的选项可以用来过滤节点。 |
-safemode enter|leave|get|wait |
安全模式维护命令。NameNode安全模式:
1. 不接受更改命名空间(只读) 2. 不复制和删除块。 安全模式在NameNode启动的时候自动进入,也会自动退出,详情请看:Hadoop之机房down机后... 安全模式可以手动进入,但是也只能手动退出。 |
-saveNamespace |
将当前命名空间保存到存储目录和重置编辑日志。需要安全模式。 |
-rollEdits |
在活动的NameNode中,Roll EditLog文件。 |
-restoreFailedStorage true|false|check |
这个选项打开或关闭自动尝试存储失败的副本。 |
-refreshNodes |
重新读取在Namenode中,哪些DataNode是包含或者是排除在外的。哪些是应该退役的或者是重新启动。 |
-setQuota <quota> <dirname>…<dirname> |
|
-clrQuota <dirname>…<dirname> |
|
-setSpaceQuota <quota> <dirname>…<dirname> |
|
-clrSpaceQuota <dirname>…<dirname> |
|
-setStoragePolicy <path> <policyName> |
对一个文件或者目录设置存储策略。 |
-getStoragePolicy <path> |
从一个文件或者目录中获取存储策略。 |
-finalizeUpgrade |
完成升级的HDFS。Datanode将删除前一个版本的工作目录。接下来NameNode也一样。这个升级就完成了。 |
-rollingUpgrade [<query>|<prepare>|<finalize>] |
|
-metasave filename |
保存NameNode主数据结构到filename中,目录是由hadoop.log.dir property配置参数指定的,filename如果存在会被覆盖。包含下列信息:
1。DataNode和NameNode的心跳。 2。等待复制的块 3。目前正在复制的块 4。等待被删除的块 |
-refreshServiceAcl |
新装入服务级别的授权策略文件。 |
-refreshUserToGroupsMappings |
刷新用户和组的对应关系。 |
-refreshSuperUserGroupsConfiguration |
刷新超级用户代理组的对应关系。 |
-refreshCallQueue |
从配置中加载Call Queue。 |
-refresh <host:ipc_port> <key> [arg1..argn] |
触发在指定的<host:ipc_port>上指定的<key>上做运行时刷新。 |
-reconfig <datanode |…> <host:ipc_port> <start|status> |
开始重新加载配置或者获取重新加载配置的状态。第二个参数是指定节点的类型。 |
-printTopology |
打印哪些有在Namenode报告的节点的网络拓扑结构。 |
-refreshNamenodes datanodehost:port |
对于给定的节点,重新加载配置文件,停止服务删除块池和启动服务新块池。 |
-deleteBlockPool datanode-host:port blockpoolId [force] |
|
-setBalancerBandwidth <bandwidth in bytes per second> |
在块平衡期间,使用这个命令可以改变每个DataNode的网路带宽。<bandwidth>定义了DataNode的每秒的流量。 |
-allowSnapshot <snapshotDir> |
允许在一个目录创建快照,如果操作成功完成,这个目录将变成快照目录。 |
-disallowSnapshot <snapshotDir> |
取消被创建的快照目录,所有的快照目录都会被删除。 |
-fetchImage <local directory> |
下载最新的fsimage,保存在本地的目录中。 |
-shutdownDatanode <datanode_host:ipc_port> [upgrade] |
对给定的DataNode提交一个关闭请求。 |
-getDatanodeInfo <datanode_host:ipc_port> |
获得给定的DataNode的信息 |
-triggerBlockReport [-incremental] <datanode_host:ipc_port> |
触发一个给定的DataNode块报告,如果带了-incremental参数,则将是一个完整的块报表。 |
-help [cmd] |
如果没有带参数,则打印所有命令参数的说明。 |
示例:
[[email protected] bin]$ hdfs dfsadmin -printTopology Rack: /default-rack 10.0.1.80:50010 (hadoopcluster80) 10.0.1.82:50010 (hadoopcluster82) 10.0.1.83:50010 (hadoopcluster83) 10.0.1.84:50010 (hadoopcluster84)
journalnode
使用: hdfs journalnode
做NameNode高可用,使用该命令启动journalnode。
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 ]
命令选项 | 描述 |
---|---|
-backup |
启动BackNode |
-checkpoint |
启动checkpoint node. |
-format [-clusterid [-force] [-nonInteractive] |
格式化指定的NameNode。它是先启动NameNode,格式化,然后关闭Namenode。-force 选项即使name目录存在也会强行格式化。 -nonInteractive选项表示如果name目录存在,则终止操作。 |
-upgrade [-clusterid [-renameReserved <k-v pairs>] |
. |
-upgradeOnly [-clusterid [-renameReserved <k-v pairs>] |
升级指定的NameNode,然后关闭它。 |
-rollback |
回滚NameNode到前一个版本。但是必须在集群停止后,并且部署了老的hadoop版本。 |
-rollingUpgrade <downgrade|rollback|started> |
回滚升级。 |
-finalize |
删除文件系统的前一个状态,当前升级的版本将变成永久的。使用了这个命令,Rollback没有任何作用。finalize之后NameNode将被关闭。 |
-importCheckpoint |
从checkpoint 目录加载Image。Checkpoint目录从fs.checkpoint.dir 配置中读取。 |
-initializeSharedEdits |
namenode通过initializeSharedEdits命令来初始化journalnode,把edits文件共享到journalnode上,以至于standby NameNode能够启动。 |
-bootstrapStandby |
在配置了高可用集群的情况下,允许standby NameNode在引导的时候从active NameNode拷贝最新的命名空间快照。 |
-recover [-force] |
恢复损坏的文件系统上的元数据 |
-metadataVersion |
验证配置目录是否存在,并且打印metadata的软件版本和image。 |
运行NameNode。
实例:
[[email protected] bin]$ hdfs namenode -metadataVersion 15/08/18 19:16:46 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = hadoopcluster78/10.0.1.78 STARTUP_MSG: args = [-metadataVersion] STARTUP_MSG: version = 2.4.1 STARTUP_MSG: classpath = /home/hadoop/apache/hadoop-2.4.1。。。省略
nfs3
Usage: hdfs nfs3
和网络文件系统有关的命令。
portmap
使用: hdfs portmap
和网络文件系统有关的命令。
secondarynamenode
使用: hdfs secondarynamenode [-checkpoint [force]] | [-format] | [-geteditsize]
命令选项 | 描述 |
---|---|
-checkpoint [force] |
如果EditLog size >= fs.checkpoint.size,在SecondaryNameNode中Checkpoint。如果带了-force参数就不用管EditLog size大小了。 |
-format |
在启动时格式化本地存储 |
-geteditsize |
在NameNode打印没有checkpoint事务的数量。 |
运行HDFS的secondary namenode。
zkfc
使用: hdfs zkfc [-formatZK [-force] [-nonInteractive]]
命令选项 | 描述 |
---|---|
-formatZK |
格式化Zookeeper实例。 |
-h |
打印帮助 |
该命令在启动Zookeeper高可用的时候使用。
版权声明:本文为博主原创文章,未经博主允许不得转载。