Hadoop【从无到有从有到无】【H4】命令指南
目录
2.3.1.etc/hadoop/hadoop-env.sh
2.3.2.etc/hadoop/hadoop-user-functions.sh
1.概述
所有Hadoop命令和子项目都遵循相同的基本结构:
用法: shellcommand [SHELL_OPTIONS] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]
FIELD | Description |
---|---|
shellcommand | 所调用项目的命令。 例如,Hadoop使用hadoop,HDFS使用hdfs,而YARN使用yarn。 |
SHELL_OPTIONS | Shell在执行Java之前处理的选项。 |
COMMAND | 要执行的动作。 |
GENERIC_OPTIONS | 多个命令支持的一组通用选项。 |
COMMAND_OPTIONS | 本文档针对Hadoop通用子项目描述了各种命令及其选项。 HDFS和YARN包含在其他文档中。 |
1.1.Shell选项
所有的shell命令都将接受一组通用的选项。 对于某些命令,这些选项将被忽略。 例如,在仅在单个主机上执行的命令上传递--hostnames将被忽略。
SHELL_OPTION | Description |
---|---|
--buildpaths | 启用jar的开发版本。 |
--config confdir | 覆盖默认的配置目录。 默认值为$HADOOP_HOME/etc/hadoop. |
--daemon mode |
如果该命令支持守护程序(例如hdfs namenode),请以适当的模式执行。 支持的模式有:启动以后台驻留程序模式启动进程,停止以停止进程以及状态确定进程的活动状态。 状态将返回符合LSB-compliant的结果代码。 如果未提供任何选项,则支持守护程序的命令将在前台运行。 对于不支持守护程序的命令,将忽略此选项。 |
--debug | 启用shell层配置调试信息 |
--help | Shell脚本用法信息。 |
--hostnames | 使用--workers时,请使用空格分隔的主机名列表覆盖worker文件,以在其中执行多主机子命令。 如果不使用--workers,则忽略此选项。 |
--hosts |
使用--workers时,请用另一个文件覆盖该worker文件,该文件包含要在其中执行多主机子命令的主机名列表。 如果不使用--workers,则忽略此选项。 |
--loglevel loglevel | 覆盖日志级别。 有效的日志级别为FATAL,ERROR,WARN,INFO,DEBUG和TRACE。 默认值为INFO。 |
--workers | 如果可能,请在workers文件中的所有主机上执行此命令。 |
1.2.通用选项
许多子命令使用一组通用的配置选项来更改其行为:
GENERIC_OPTION | Description |
---|---|
-archives <comma separated list of archives> | 指定用逗号分隔的归档文件,以在计算机上将其取消归档。 仅适用于工作(job)。 |
-conf <configuration file> | 指定应用程序配置文件。 |
-D <property>=<value> | 给定属性的使用值。 |
-files <comma separated list of files> | 指定以逗号分隔的文件,以将其复制到map reduce集群。 仅适用于工作(job)。 |
-fs <file:///> or <hdfs://namenode:port> |
指定要使用的默认文件系统URL。从配置中覆盖 'fs.defaultFS' 属性。 |
-jt <local> or <resourcemanager:port> | 指定一个ResourceManager。 仅适用于工作(job)。 |
-libjars <comma seperated list of jars> |
指定以逗号分隔的jar文件以包含在类路径中。 仅适用于工作(job)。 |
2.Hadoop常用命令
所有这些命令都是从hadoop shell命令执行的。 它们已分为“用户命令”和“管理命令”。
2.1.用户命令
对hadoop集群的用户有用的命令。
2.1.1.档案文件(archive)
创建一个hadoop存档。 可以在《 Hadoop归档指南(Hadoop Archives Guide)》中找到更多信息。
2.1.2.检查本机(checknative)
用法: hadoop checknative [-a] [-h]
COMMAND_OPTION | Description |
---|---|
-a | 检查所有库是否可用。 |
-h | 打印帮助 |
此命令检查Hadoop本机代码的可用性。 有关更多信息,请参见Native Libaries。 默认情况下,此命令仅检查libhadoop的可用性。
2.1.3.classpath
用法: hadoop classpath [--glob |--jar <path> |-h |--help]
COMMAND_OPTION | Description |
---|---|
--glob | 展开通配符 |
--jar path | 将类路径作为清单写入名为path的jar中 |
-h, --help | 打印帮助 |
打印获取Hadoop jar和所需库所需的类路径。 如果不带参数调用,则打印由命令脚本设置的类路径,该类路径可能在类路径条目中包含通配符。 其他选项可在通配符扩展后打印类路径,或将类路径写入jar文件的清单中。 后者在无法使用通配符且扩展的类路径超过支持的最大命令行长度的环境中很有用。
2.1.4.conftest
用法: hadoop conftest [-conffile <path>]...
COMMAND_OPTION | Description |
---|---|
-conffile | 要验证的配置文件或目录的路径 |
-h, --help | 打印帮助 |
验证配置XML文件。 如果未指定-conffile选项,则将验证${HADOOP_CONF_DIR}中名称以.xml结尾的文件。 如果指定,将验证该路径。 您可以指定文件或目录,如果指定了目录,则将验证该目录中名称以.xml结尾的文件。 您可以多次指定-conffile选项。
验证非常少:解析XML,并检查重复和空属性名称。 该命令不支持XInclude。 如果使用它来引入配置项,它将声明XML文件无效。
2.1.5.凭据(credential)
用法: hadoop credential <subcommand> [options]
COMMAND_OPTION | Description |
---|---|
create alias [-provider provider-path] [-strict] [-value credential-value] |
提示用户将凭据存储为给定别名。 除非指明-provider,否则将使用core-site.xml文件中的hadoop.security.credential.provider.path。 如果提供程序使用默认密码,则-strict标志将导致命令失败。 使用-value标志来提供凭据值(也称为别名密码)而不是提示您。 |
delete alias [-provider provider-path] [-strict] [-f] |
删除具有提供的别名的凭据。 除非指明-provider,否则将使用core-site.xml文件中的hadoop.security.credential.provider.path。 如果提供程序使用默认密码,则-strict标志将导致命令失败。 除非指定-f,否则该命令要求确认。 |
list [-provider provider-path] [-strict] |
列出所有凭证别名除非指明提供者,否则将使用core-site.xml文件中的hadoop.security.credential.provider.path。 如果提供程序使用默认密码,则-strict标志将导致命令失败。 |
用于管理凭据提供程序中的凭据,密码和机密的命令。
Hadoop中的CredentialProvider API允许分离应用程序以及它们如何存储所需的passwords/secrets。 为了指示特定的提供程序类型和位置,用户必须在core-site.xml中提供hadoop.security.credential.provider.path配置元素,或在以下每个命令上使用命令行选项 -provider。 该提供程序路径是一个用逗号分隔的URL列表,它指示应查询的提供程序列表的类型和位置。 例如,以下路径: user:///,jceks://file/tmp/test.jceks,jceks://[email protected]/my/path/test.jceks
指示应通过用户提供程序查询当前用户的凭据文件,在/tmp/test.jceks上的本地文件是Java Keystore Provider,和在HDFS内nn1.example.com/my/path/test.jceks的文件也是Java Keystore Provider的存储。
提供程序经常要求提供密码或其他机密。 如果提供者需要密码而找不到密码,它将使用默认密码并发出一条警告消息,提示您正在使用默认密码。 如果提供了-strict标志,则警告消息变为错误消息,并且该命令立即返回错误状态。
例如: hadoop credential list -provider jceks://file/tmp/test.jceks
2.1.6.distch
用法: hadoop distch [-f urilist_url] [-i] [-log logdir] path:owner:group:permissions
COMMAND_OPTION | Description |
---|---|
-f | 更改对象列表 |
-i | 忽略故障 |
-log | 日志输出目录 |
一次更改许多文件的所有权和权限。
2.1.7.distcp
递归复制文件或目录。 有关更多信息,请参见《 Hadoop DistCp指南》。
2.1.8.dtutil
用法: hadoop dtutil [-keytab keytab_file -principal principal_name ] subcommand [-format (java|protobuf)] [-alias alias ] [-renewer renewer ] filename…
实用程序,用于获取和管理凭据文件中的hadoop授权令牌。 它旨在替代更简单的命令fetchdt。 有多个子命令,每个子命令都有自己的标志和选项。
对于每个写出文件的子命令,-format选项将指定要使用的内部格式。 java是与fetchdt匹配的传统格式。 默认值为protobuf。
对于连接到服务的每个子命令,都提供了便利标志,以指定用于身份验证的kerberos主体名称和keytab文件。
SUBCOMMAND | Description |
---|---|
print [-alias alias ] filename [ filename2 ...] |
打印出filename (和filename2 ...)中包含的标记中的字段。 |
get URL [-service scheme ] [-format (java|protobuf)] [-alias alias ] [-renewer renewer ] filename |
从URL的服务中获取令牌并将其放置在文件名中。 |
append [-format (java|protobuf)] filename filename2 [ filename3 ...] |
将前N个文件名的内容追加到最后一个文件名。 如果多个文件中都存在带有公共服务字段的令牌,则早期文件的令牌将被覆盖。 也就是说,最后一个文件中存在的令牌始终被保留。 |
remove -alias alias [-format (java|protobuf)] filename [ filename2 ...] |
从指定的每个文件中删除与别名匹配的标记,并使用指定的格式写出每个文件。 必须指定别名。 |
cancel -alias alias [-format (java|protobuf)] filename [ filename2 ...] |
就像删除一样,除了令牌也使用令牌对象中指定的服务取消。 |
renew -alias alias [-format (java|protobuf)] filename [ filename2 ...] |
对于指定的每个文件,续订与别名匹配的令牌并使用指定的格式写出每个文件。 必须指定别名。 |
2.1.9.fs
《File System Shell Guide》中记录了该命令。 使用HDFS时,它是hdfs dfs的同义词。
2.1.10.gridmix
Gridmix是Hadoop集群的基准测试工具。 可以在《Gridmix Guide》中找到更多信息。
2.1.11.jar
用法: hadoop jar <jar> [mainClass] args...
运行一个jar文件。
请使用yarn jar启动YARN应用程序。
2.1.12.jnipath
用法: hadoop jnipath
打印计算的 java.library.path。
2.1.13.kerbname
用法: hadoop kerbname principal
通过auth_to_local规则将命名的主体转换为Hadoop用户名。
例如: hadoop kerbname [email protected]
2.1.14.kdiag
用法: hadoop kdiag
诊断Kerberos问题
2.1.15.key
用法: hadoop key <subcommand> [options]
COMMAND_OPTION | Description |
---|---|
create keyname [-cipher cipher] [-size size] [-description description] [-attr attribute=value] [-provider provider] [-strict] [-help] |
在-provider参数指定的提供程序中,为**名称参数指定的名称创建一个新**。 如果提供程序使用默认密码,则-strict标志将导致命令失败。 您可以指定带有密码参数的密码。 当前默认密码为“ “AES/CTR/NoPadding”。 默认**大小为128.您可以使用-size参数指定请求的**长度。 可以使用-attr参数指定任意attribute=value样式属性。 -attr可以多次指定,每个属性一次。 |
roll keyname [-provider provider] [-strict] [-help] |
在使用-provider参数指示的提供者中为指定**创建新版本。 如果提供程序使用默认密码,则-strict标志将导致命令失败。 |
delete keyname [-provider provider] [-strict] [-f] [-help] |
从-provider指定的提供程序中删除由 keyname 参数指定的所有版本的**。 如果提供程序使用默认密码,则-strict标志将导致命令失败。 除非指定-f,否则该命令要求用户确认。 |
list [-provider provider] [-strict] [-metadata] [-help] |
显示在core-site.xml中配置或由-provider 参数指定的特定提供程序中包含的键名。 如果提供程序使用默认密码,则-strict标志将导致命令失败。 -metadata显示元数据。 |
-help | 打印此命令的用法 |
通过KeyProvider管理**。 有关KeyProvider的详细信息,请参见《透明加密指南》。
提供程序经常要求提供密码或其他机密。 如果提供者需要密码而找不到密码,它将使用默认密码并发出一条警告消息,提示您正在使用默认密码。 如果提供了-strict标志,则警告消息变为错误消息,并且该命令立即返回错误状态。
注意:某些KeyProvider(例如org.apache.hadoop.crypto.key.JavaKeyStoreProvider)不支持大写**名称。
注意:某些KeyProvider不会直接执行**删除操作(例如,执行软删除操作或延迟实际的删除操作,以防止出错)。 在这些情况下,删除后创建/删除具有相同名称的**时可能会遇到错误。 请检查基础KeyProvider以获得详细信息。
2.1.6.kms
用法: hadoop kms
运行**管理服务器KMS。
2.1.7.trace
查看和修改Hadoop跟踪设置。 请参阅跟踪指南。
2.1.8.version
用法: hadoop version
打印版本。
2.1.9.CLASSNAME
用法: hadoop CLASSNAME
运行名为CLASSNAME的类。 该类必须是包的一部分。
2.1.10.envvars
用法: hadoop envvars
显示计算的Hadoop环境变量。
2.2.Administration命令
对hadoop集群的管理员有用的命令。
2.2.1.daemonlog
用法:
hadoop daemonlog -getlevel <host:port> <classname> [-protocol (http|https)]
hadoop daemonlog -setlevel <host:port> <classname> <level> [-protocol (http|https)]
COMMAND_OPTION | Description |
---|---|
-getlevel host:port classname [-protocol (httphttps)] |
在运行于 host:port 的守护程序中打印由合格的classname标识的日志的日志级别。-protocol标志指定连接协议。 |
-setlevel host:port classname level [-protocol (httphttps)] |
在运行于 host:port 的守护程序中设置由合格的classname标识的日志的日志级别。 -protoco标志指定连接协议。 |
动态 Get/Set 守护程序中由合格的类名称标识的日志的日志级别。 默认情况下,该命令发送HTTP请求,但是可以通过使用-protocol https参数发送HTTPS请求来覆盖此请求。
例:
$ bin/hadoop daemonlog -setlevel 127.0.0.1:9870 org.apache.hadoop.hdfs.server.namenode.NameNode DEBUG
$ bin/hadoop daemonlog -getlevel 127.0.0.1:9871 org.apache.hadoop.hdfs.server.namenode.NameNode DEBUG -protocol https
请注意,该设置不是永久性的,并且在重新启动守护程序时将被重置。 该命令通过向守护程序的内部Jetty Servlet发送HTTP/HTTPS请求来起作用,因此它支持以下守护程序:
- Common
- key management server
- HDFS
- name node
- secondary name node
- data node
- journal node
- HttpFS server
- YARN
- resource manager
- node manager
- Timeline server
2.3.Files
2.3.1.etc/hadoop/hadoop-env.sh
该文件存储所有Hadoop Shell命令使用的全局设置。
2.3.2.etc/hadoop/hadoop-user-functions.sh
此文件允许高级用户覆盖某些Shell功能。
2.3.3.~/.hadooprc
这为个人用户存储了个人环境。 它在hadoop-env.sh和hadoop-user-functions.sh文件之后进行处理,并且可以包含相同的设置。