hadoop2.8.2命令手册

hadoop 同时被 3 个专栏收录
11 篇文章 0 订阅
1 篇文章 0 订阅
11 篇文章 0 订阅

概述

所有的hadoop命令都是靠bin/hadoop脚本来执行。不带任何参数执行bin/hadoop脚本会打印出所有命令的描述。
用法如下:

hadoop [--config confdir] [--loglevel loglevel] [命令] [常规选项] [命令选线]
选项描述
–config confdir覆盖默认配置目录,默认是${HADOOP_HOME}/conf
–loglevel loglevel日志水命,可用的值:FATAL, ERROR, WARN, INFO, DEBUG, 和TRACE. 默认是INFO.
常规选项多个命令都支持的通用选项。
命令选线Hadoop子项目的各种命令选项,HDFS和YARN不在本文档中

常规选项

很多子命令都包含一些通用的配置选项,如下:

选项描述
-archives逗号分隔的档案文件,只适用于job。
-conf指定应用的配置文件
-D键值对,给属性指定值
-files指定要拷贝到map reduce集群的文件的逗号分隔的列表。 只适用于job。
-fs指定namenode的URL
-jt指定ResourceManager,只适用于job。
-libjars逗号分隔的jar文件列表,逗号分开。只适用于job。

Hadoop命令

下面所有的命令都可以使用hadoop脚本来执行,他们可以被分为两类:用户命令和管理命令。

用户命令

hadoop集群中用户可用的命令。

archive

建一个hadoop档案文件。Hadoop archives是特殊的档案格式。一个Hadoop archive对应一个文件系统目录。 Hadoop archive的扩展名是.har。Hadoop archive包含元数据(形式是_index和_masterindx)和数据(part-)文件。_index文件包含了档案中的文件的文件名和位置信息。

怎么创建一个档案
hadoop archive -archiveName name -p <parent> [-r <replication factor>] <src>* <dest>

由-archiveName选项指定你要创建的archive的名字。比如foo.har。archive的名字的扩展名应该是*.har。parent参数是为了指定相对路径,例子如下:

-p /foo/bar a/b/c e/f/g

/foo/bar是一个parent路径,a/b/c 和e/f/g是parent的相对路径。注意这是Map/Reduce
job创建的档案,你需要一个map reduce集群来运行,详细的例子接下来会讲到。
-r指出一个复制因子,如果不指定,默认是3。
如果你仅想归档一个单独的目录/foo/bar,那么你可以向下面这样:

hadoop archive -archiveName zoo.har -p /foo/bar -r 3 /outputdir

如果你指定的源文件在加密区,那么他们会先解密然后写进档案目录。如果har文件不在加密区,就是明文格式,如果har文件在加密区就是加密形式。

如何查看档案文件

archive作为文件系统层暴露给外界。所以所有的fs shell命令都能在archive上运行,但是要使用不同的URI。 另外,archive是不可改变的。所以重命名,删除和创建都会返回错误。Hadoop Archives 的URI是:

har://scheme-hostname:port/archivepath/fileinarchive

如果没有scheme-hostname它会使用默认的文件系统。这种情况下URI是这种形式:

har:///archivepath/fileinarchive
怎么删除档案

所有的FS SHELL命令都可以用在档案文件上,删除档案照搬过来就可以。
按顺序删除档案:

hdfs dfs -cp har:///user/zoo/foo.har/dir1 hdfs:/user/zoo/newdir

使用DistCp并行删除:

hadoop distcp har:///user/zoo/foo.har/dir1 hdfs:/user/zoo/newdir
实例
hadoop archive -archiveName foo.har -p /user/hadoop -r 3 dir1 dir2 /user/zoo

上面的命令使用/user/hadoop作为相对目录。然后把/user/hadoop/dir1和/user/hadoop/dir2归档到/user/zoo/forr.har文件中。归档并不会删除源文件。如果你想删除源文件,那么你需要自己删除。-r指定为3,也就是复制因子是3。
就像在文件系统上使用ls一样,查看归档文件也是如此简单。你可以使用下面的命令查看上面的归档文件:

hdfs dfs -ls -R har:///user/zoo/foo.har/

为了更好的理解-p的意义,让我们重温一下上面的例子,如果你仅仅使用ls(而不是ls -R),像下面这样:

hdfs dfs -ls har:///user/zoo/foo.har

输出结果如下:

har:///user/zoo/foo.har/dir1
har:///user/zoo/foo.har/dir2

假如你使用下面命令归档:

hadoop archive -archiveName foo.har -p /user/ hadoop/dir1 hadoop/dir2 /user/zoo

那么使用ls查看归档文件如下:

hdfs dfs -ls har:///user/zoo/foo.har

输出结果就是:

har:///user/zoo/foo.har/hadoop/dir1
har:///user/zoo/foo.har/hadoop/dir2

需要注意的是归档文件是相对于/user而不是/user/hadoop

hadoop档案盒MapReduce

在MapReduce中使用档案文件,只需要指定一个不同的输入文件系统。如果在HDFS中存在档案文件/user/zoo/foo.har,此文件需要作为MapReduce的输入,你需要做的就是指定输入目录为:har:///user/zoo/foo.har。因为档案文件是作为一个文件系统暴露给MapReduce的,也可以使用档案中所有的文件作为输入。

checknative

用法:

hadoop checknative [-a] [-h]
  • -a:检查所有可用的库
  • -h:打印帮助

这个命令检查Hadoop可用的本地代码。查看本地库获得更多信息。

classpath

用法

hadoop classpath [--glob |--jar <path> |-h |--help]
  • glob:扩展通配符
  • jar:jar文件路径
  • h,help:帮助
    打印classpath需要获得Hadoop jar和需要的库。如果不带参数调用,那么打印出的就是命令脚本设置的classpath,会带有通配符。额外的选项是使用通配符打印classpath以及写classpath到一个jar文件的manifest中。后者在使用中是很有用的,尤其是当通配符不可用,或者扩展classpath超过了最大命令行长度。

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]使用别名删除凭证,命令会被询问确认,除非指定了-f
list [-provider provider-path] [-strict]列出所有的凭证别名

此命令管理凭证,密码。
CredentialProvider API允许分离应用,以及如何存储他们的密码。为了指定特定的provider类型和位置,使用core-site.xml中的hadoop.security.credential.provider.path属性或者使用命令行选项-provider。provider路径是逗号分开的URL。例如:

user:///,jceks://file/tmp/test.jceks,jceks://hdfs@nn1.example.com/my/path/test.jceks

当前用户的凭证文件需要通过User Provider,本地文件/tmp/test.jceks是一个java keystore Provider,HDFS文件 nn1.example.com/my/path/test.jceks也是一个java keystore Provider。
当使用credential 命令时,通常给一个特定的provider指定密码。为了显示的指定使用哪个provider,应该使用-provider选项。否则,如果给定多个provider,那么就会选择第一个非临时的provider。这也许不是你想要的。

Provider通常需要一个密码,如果没有密码,那么就是用默认的。这个时候就会发出一条警告消息,如果使用了-strict标识,这条警告消息就会变一个错误消息并且命令马上返回。

distcp

递归复制目录和文件。查看DistCp手册
之后会翻译到。

fs

此命令查看FS SHELL文档
之后会翻译到。

jar

用法:

hadoop jar <jar> [mainClass] args...

执行一个jar文件。
使用yarn jar启动一个YARN应用。

key

用法:

hadoop key <subcommand> [options]

需要说明的是下面的-provider,-strict,-f选项和credential命令中的一致,这里就不在赘述。

命令选项描述
create keyname [-cipher cipher] [-size size] [-description description] [-attr attribute=value] [-provider provider] [-strict] [-help]创建一个key使用keyname指定名称,使用-provider指定provider。可以使用-cipher来指定cipher ,默认是AES/CTR/NoPadding。默认的key大小是128。你可以使用-size来制定key的长度。-attr来指定任意的键值对,-attr可以指定多次,一次指定一个键值对。
roll keyname [-provider provider] [-strict] [-help]为key创建一个新的版本
delete keyname [-provider provider] [-strict] [-f] [-help]通过keyname删除所有的key版本
list [-provider provider] [-strict] [-metadata] [-help]根据指定的provider列出keyname,-metadata将会展示元数据
-help打印此命令的用法

trace

查看和修改Hadoop的跟踪设置,查看Tracingshouce

version

用法:

hadoop version

打印版本号。

CLASSNAME

用法:

hadoop CLASSNAME

执行名称为CLASSNAME的类。

管理命令

hadoop集群中管理员使用的命令。

daemonlog

用法:

hadoop daemonlog -getlevel <host:httpport> <classname>
hadoop daemonlog -setlevel <host:httpport> <classname> <level>
命令选项描述
-getlevel host:httpport classname打印指定classname的日志水平,这个命令连接http:///logLevel?log=
-setlevel host:httpport classname level给classname设置日志水平,这个命令连接http:///logLevel?log=&level=

获取或者设置class name的日志水平。
实例:

bin/hadoop daemonlog -setlevel 127.0.0.1:50070 org.apache.hadoop.hdfs.server.namenode.NameNode DEBUG
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值