概述
在Hadoop中所有的命令都是通过bin/hadoop脚本调用,如果不使用任何参数运行,那么这个hadoop脚本会输出所有的命令及描述信息。
用法:hadoop [--config confdir] [--loglevel loglevel] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]
参数 | 描述信息 |
--config confdir | 重写或者自定义默认的配置目录,默认的配置目录为${HADOOP_HOME}/conf |
--loglevel loglevel | 重写或者自定义日志级别,日志级别分别为 FATAL、ERROR、WARN、INFO、DEBUG和TRACE。默认为INFO。 |
GENERIC_OPTIONS | 多个命令支持的通用选项集合 |
COMMAND_OPTIONS | 对应的命令次选项(子命令的选项) |
通用选项
许多子命令遵循一个共同的配置选项去修改它们的行为:
通用选项 | 描述信息 |
-archives <逗号分割的archives列表> | 使用逗号分割指定不存档在计算机设备上的archives,仅适用于job。 |
-conf <配置文件> | 指定应用程序的配置文件。 |
-D <property>=<value> | 使用某个值赋予某个属性。 |
-files <使用逗号分割的文件列表> | 使用逗号分割指定要复制到 Map reduce集群上的文件。仅适用于job。 |
-jt <local> or <resourcemanager:port> | 指定ResourceManager。仅适用于job |
-libjars <使用逗号分割的jar列表> | 使用逗号分割的要使用到的多个jar文件信息。 |
Hadoop常用命令
所有的这些命令都是由hadoop这个命令执行。它们被分为用户命令和管理员命令两种。
用户命令
在hadoop集群中用户使用的命令。
归档
创建一个 hadoop 归档。更多的信息可以发现在Hadoop 档案指南。
checknative
用法:hadoop checknative [-a] [-h]
命令选项 | 描述信息 |
-a | 检查需要的连接库信息是否可用。 |
-h | 打印帮助信息。 |
这个命令检查Hadoop本地代码的可用性。此命令默认只检查libhadoop的可用性。
classpath
用法:hadoop classpath [--glob |--jar <path> |-h |--help]
命令选项 | 描述信息 |
--glob | 通配符 |
--jar path | 填写在classpath中的jar文件路径 |
-h,--help | 打印帮助信息 |
打印类路径需要取得Hadoop Jar以及所需的库。如果是无参数调用,那么会打印classpath命令脚本的设置,它可能会包含在classpath条目中的通配符。其它选项打印classpath之后的通配符或者写classpath在jar文件中的目录。在实际环境中不能使用通配符和扩展路径超过支持命令行的最大长度时后者是很有用。
credential
用法:hadoop credential <subcommand> [options]
命令选项 | 描述信息 |
create alias [-provider provider-path] | 告诉用户(命令执行者)通过这个选项给一个credential存储时起一个别名。在core-site.xml文件里面hadoop.security.credential.provider.path将被使用到,除非指定了-provider这个选项。 |
delete alias [-provider provider-path] [-f] | 这个命令的作用是根据提供的别名删除credential。在core-site.xml文件里面hadoop.security.credential.provider.path将被使用到,除非指定了-provider这个选项。该命令执行之后会要求执行者确认执行,除非指定-f这个选项。 |
list [-provider provider-path] | 列出所有的凭据别名,默认使用core-site.xml文件内hadoop.security.credential.procider.path,除非指定了 –provider。 |
使用命令管理凭据、密码和凭据提供的密钥。
Hadoop的CredentialProvider允许应用程序和他们如何存储所需密码或密钥分离。为了确定详细的提供类型以及位置,用户必须提供core-site.xml文件内hadoop.security.credential.provider.path的配置或者使用命令行选项 –provider下的每个命令。此路径是逗号分割的多个URL列表,它们指明了提供应该访问的类型和存储位置。例如,下面给出的路径:
user:///,jceks://file/tmp/test.jceks,jceks://hdfs@nn1.example.com/my/path/test.jceks
这些路径明确的指定这些用户应该访问的凭据文件,本地文件位于/tmp/test.jceks这个路径,是由一个Java Keystore 提供和文件位于HDFS内的 nn1.example.com/my/path/test.jceks 同样也是由一个Java Keystore提供的。当我们使用credential命令它通常会给存储的密钥库提供设置密码或私钥。为了明确指出使用哪个提供存储我们应该使用-provider选项。否则,多个provider赋予一个路径,将会固定地使用第一个provider。这或许不是您想要的结果。
例如:hadoop credentinal list –provider jecks://file/tmp/test.jceks
distcp
递归复制文件或目录。更多信息参考Hadoop DistCp教程。
fs
这个命令在文件系统Shell教程中有描述。在HDFS中使用时它等同于hdfs dfs这两个命令。
jar
用法:hadoop jar <jar> [mainClass] args …
它的作用是运行一个jar文件。
使用yarn jar 去代替YARN启动运用程序。
key
通过KeyProvider管理密钥。
trace
显示和修改Hadoop追踪设置。参考Tracing教程。
version
用法:hadoop version
它的作用是显示版本信息。
CLASSNAME
用法:hadoop CLASSNAME
它的作用是运行所指定的类名的类。
管理命令
这种命令对管理员管理Hadoop集群来说是非常有用的。
daemonlog
$hadoop daemonlog –getlevel <host:httpport> <classname>
$hadoop daemonlog –setlevel <host:httpport> <classname>
命令选项 | 描述 |
-getlevel host:httpport classname | 通过一个有效的classname确定输出的日志的日志级别。守护进程运行地址为host:httpport。此命令内部连接到http://<host:httpport>/logLevel?log=<classname> |
-setlevel host:httpport classname level | 通过一个有效的classname确定设置的日志的日志级别。守护进程运行地址为 host:httpport。此命令内部连接到http://<host:httpport>/logLevel?log=<classname>&level=<level> |
示例:$ bin/hadoop daemonlog -setlevel 127.0.0.1:50070 org.apache.hadoop.hdfs.server.namenode.NameNode DEBUG