1. 综述
Hadoop及其子模块的命令都遵循着相同的基本结构:
用法:shellcommand [SHELL_OPTIONS] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]
字段 | 描述 |
---|---|
shellcommand | 被调用的模块的命令。比如:调用Hadoop common模块下的命令用hadoop,HDFS用hdfs,YARN用yarn。 |
SHELL_OPTIONS | shell在执行Java程序之前需处理的选项。 |
COMMAND | 要执行的动作。 |
GENERIC_OPTIONS | 多个命令支持的常见选项集。 |
COMMAND_OPTIONS | 本篇主要描述Hadoop common模块下的各种命令选项,HDFS和YARN的相关命令选项在其它博文进行介绍。 |
1.1 Shell选项
所有shell命令都将接受一组常见的选项。对于一些命令而言,这些选项将被忽略。例如:在一个命令中传入--hostnames,只在单个主机上执行时将被忽略。
SHELL_OPTION | 说明 |
---|---|
--buildpaths | 启用开发者自定义版本的jars。 |
--config confdir | 覆盖默认的配置文件目录,默认是$HADOOP_HOME/etc/hadoop。 |
--daemon mode | 如果该命令可以被设置为守护进程(例如hdfs namenode),它将以适当的模式执行。支持的模式将开始以守护进程的模式去启动该进程,停止终止该进程,然后该状态将决定该进程是否存活,并且返回一个支持LSB的结果编码,如果没有提供选项,守护进程的命令将在前台运行。对于不能被设置为守护进程的进程,这个选项可以被忽略。 |
--debug | 启用shell级配置调试信息。 |
--help | Shell脚本使用的帮助信息。 |
--hostnames | 当同时使用--workers时,将覆盖workers文件中的内容,不使用--workers时,此选项将被忽略。用法是:用空格分隔需要执行命令的主机名列表 |
--hosts | 当同时使用--workers时,将使用另一个文件覆盖workers文件,这个文件将包含需执行命令的多个主机的主机名。如果不使用--workers,这个选项被忽略。 |
--loglevel loglevel | 覆盖日志级别,有效的日志级别是:FATAL, ERROR, WARN, INFO, DEBUG, 和TRACE。默认为INFO。 |
--workers | 如果可能,在workers文件中的所有主机上执行此命令。 |
1.2 Generic Options
许多子命令遵循一组常见的配置选项来改变它们的行为:
GENERIC_OPTION | Description |
---|---|
-archives <comma separated list of archives> | 指定要在计算机上解除归档的以逗号分隔的归档文件。只适用于job。 |
-conf <configuration file> | 指定应用的配置文件 |
-D <property>=<value> | 为指定属性设置值 |
-files <comma separated list of files> | 指定要复制到MapReduce集群的数据文件(多个文件之间用逗号分隔),只适用于job。 |
-fs <file:///> or <hdfs://namenode:port> | 指定默认使用的文件系统URL,将重写配置文件中的fs.defaultFS |
-jt <local> or <resourcemanager:port> | 指定ResourceManager,只适用于job |
-libjars <comma seperated list of jars> | 指定要放到classpath中的jar包(多个文件之间用逗号分隔) |
2. Hadoop Common命令
所有这些命令均是在hadoop命令行模式下执行的,这些命令分为用户命令和管理命令
2.1 用户命令
Hadoop集群用户常用命令
2.1.1 archive
归档部分内容单独整理到其它博文中。
2.1.2 checknative
用法:
hadoop checknative [-a] [-h]
命令参数 | 说明 |
---|---|
-a | 检查所有的lib是否可用。 |
-h | 打印help |
用于检查Hadoop本地代码的可用性。默认情况下,该命令只检查libhadoop的可用性。
2.1.3 classpath
用法:
hadoop classpath [--glob |--jar <path> |-h |--help]
命令参数 | 说明 |
---|---|
--glob | 通配符扩展 |
--jar path | 将path中的jar(path为目录时)或path对应的jar(path为jar文件时)写入classpath的清单 |
-h, --help | 打印help |
打印获得Hadoop jar所需的类路径和所需的库。如果不带参数调用,则打印由命令脚本设置的类路径,命令脚本很可能在类路径条目中包含通配符。其他选项在通配符展开后打印类路径,或将类路径写入jar文件的清单中。后一种方法在不能使用通配符和扩展类路径超过支持的最大命令行长度的环境中非常有用。
2.1.4 conftest
用法:
hadoop conftest [-conffile <path>]...
命令参数 | 说明 |
---|---|
-conffile | 要验证的配置文件或目录的路径 |
-h, --help | 打印help |
验证配置XML文件。不指定-conffile选项时,默认验证${HADOOP_CONF_DIR}中以.xml结尾的文件。如果指定,将验证指定的路径(可以是文件或目录)。如果指定了一个目录,将验证该目录中带xml后缀的所有文件。也可以多次指定-conffile选项(如:hadoop conftest -conffile <path> -conffile <path> 这样)。验证过程只是解析XML并检查重复的属性名和空属性名。不支持XInclude,如果使用它来拉入配置项,将产生XML文件无效的问题。
2.1.5 credential
用法:
hadoop credential <subcommand> [options]
命令参数 | 说明 |
---|---|
create alias [-provider provider-path] [-strict] [-value credential-value] | 提示用户将凭据存储为给定别名。不指定-provider时,将取core-site.xml中配置的hadoop.security.credential.provider.path的值。provider使用默认密码时,-strict将导致命令失败。使用-value标志来提供凭证值(也就是别名密码),而不是通过提示输入密码的方式进行验证。 |
delete alias [-provider provider-path] [-strict] [-f] | 使用提供的别名删除凭据。不指定-provider时,将取core-site.xml中配置的hadoop.security.credential.provider.path的值。如果provider使用默认密码,-strict将导致命令失败。-f表示强制执行。 |
list [-provider provider-path] [-strict] | 列出凭据别名,不指定-provider时,将取core-site.xml中配置的hadoop.security.credential.provider.path的值。provider使用默认密码时,-strict将导致命令失败。 |
通过credential provider对凭证,密码和密钥进行管理。
2.1.6 distch
用法:
hadoop distch [-f urilist_url] [-i] [-log logdir] path:owner:group:permissions
命令参数 | 说明 |
---|---|
-f | 要更改的对象列表 |
-i | 忽视失败 |
-log | 日志输出目录 |
一次更改多个文件的所有权和权限。
2.1.7 distcp
递归复制文件或目录,在另一篇博文中有详细介绍。
2.1.8 dtutil
用法:
hadoop dtutil [-keytab keytab_file -principal principal_name ] subcommand [-format (java|protobuf)] [-alias alias ] [-renewer renewer ] filename…
用于获取和管理凭证文件内的hadoop委托tokens的实用工具。它是用来替换fetchdt命令的。此命令一般包含有多个子命令,每个子命令都有自己的标志和选项。对于每个输出文件的子命令,-format选项将指定要使用的内部格式。对于连接到服务的每个子命令,都提供了方便的标志来指定kerberos主体名称和用于身份验证的keytab文件。
子命令 | 说明 |
---|---|
print [-alias alias ] filename [ filename2 ...] | 如果指定了别名,则只打印匹配别名的tokens。不指定时,打印所有tokens。 |
get URL [-service scheme ] [-format (java|protobuf)] [-alias alias ] [-renewer renewer ] filename | 通过URL获取服务的token并将其放入filename文件 |
append [-format (java|protobuf)] filename filename2 [ filename3 ...] | 将前面N个文件的内容追加到最后一个文件 如果多个文件出现相同服务的token,后面文件的token将覆盖之前文件的token, 也就是说,在最后一个文件中出现的token始终被保留。 |
remove -alias alias [-format (java|protobuf)] filename [ filename2 ...] | 从每一个被指定的文件中删除alias对应的token然后以特定格式写出每个文件 必须指定alias |
cancel -alias alias [-format (java|protobuf)] filename [ filename2 ...] | 与删除相似,取消使用特定token也必须在特定token对象里进行操作 |
renew -alias alias [-format (java|protobuf)] filename [ filename2 ...] | 以特定格式将指定的各个文件对应的alias进行更新并写入到每个文件 必须指定alias |
2.1.9 fs
这部分内容被单独收录在File System Shell指南中,当使用hdfs时,它是hdfs dfs的同义词。