hadoop搭建(三)
本文档翻译hadoop的命令手册,来自Hadoop Commands Guide
概述
所有的hadoop命令可以通过bin/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 | 本文档中介绍了Hadoop公共子项目的各种命令及其选项。HDFS和YARN在其他文档中被提到 |
一般选项
许多子命令都支持一组通用的配置选项来改变它们的行为:
通用选项 | 详情 |
---|---|
archives <逗号分隔的归档列表> | Specify comma separated archives to be unarchived on the compute machines. Applies only to job. |
conf | 指定配置文件 |
D = | 给对应的属性赋值 |
files <逗号分隔的文件列表> | 指定一个逗号分隔的文件列表,可以被复制到mapreduce集群中。在job中使用 |
fs <file:///> 或者 hdfs://namenode:port | 指定默认的文件的url. 覆盖配置中的’fs.defaultFS’属性 |
jt 或者 resourcemanager:port | 指定一个resourcemanager。在job中使用 |
libjars | 指定逗号分隔的jar包到classpath。在job中使用 |
用户命令
对hadoop集群的用户有用的命令。
archive(?归档)
创建一个hadoop归档。翻译自Hadoop Archives Guide
-
概述
Hadoop档案是特殊格式的档案。一个Hadoop存档映射到文件系统目录。 Hadoop存档总是具有* .har扩展名。Hadoop归档目录包含元数据(以_index和_masterindex的形式)和data(part-* )文件。_index文件包含部分归档文件的名字和这些文件的所在位置。 -
如何创建一个档案
用法:hadoop archieve -archiveName name -p <parent> [-r <replication factor>] <src>* <dest>
-archiveName 是你将要创建的档案的名字。例如:foo.har。名字应该要有*.har
的扩展。
parent参数指定了档案关联的文件的相对路径,例如:
-p /foo/bar a/b/c e/f/g
这里的/foo/bar是父路径,而a/b/c,e/f/g是相对父路径的相对路径。注意到map/reduce会创建一个档案。你需要一个mapreduce集群来运行它。后面章节有一个详细的例子。
-r 表示需要复制的元素;如果可选参数未被指定, a replication factor of 3 will be used.(?)
如果你想要归档一个目录:/foo/bar
你可以使用下面的代码:
hadoop archive -archiveName zoo.har -p /foo/bar -r 3 /outputdir
如果指定加密区中的源文件,它们将被解密并写入存档。 如果har文件不在加密区中,则它们将以明文(解密)形式存储。 如果har文件位于加密区域,则它们将以加密形式存储。 -
如何在档案中寻找一个文件
存档将自身公开为文件系统层。 因此,归档中的所有fs shell命令都可以工作,但具有不同的URI。 另请注意,档案是不可变的。 因此,重命名,删除和创建会返回错误。 Hadoop Archives的URI是
har ://scheme-hostname:port/archivepath/fileinarchive
如果文件系统中没有scheme提供。这种情况下的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/foo.har
中。归档将不会删除输入的文件。如果你在创建一个档案后想要删除一个输入文件,你将不得不自己完成。In this example, because -r 3 is specified, a replication factor of 3 will be used.(?)
-
寻找文件
在hadoop档案中寻找文件就像在文件系统中使用ls
一样简单。在上述例子之后,你到达目录/user/hadoop/dir1
和/user/hadoop/dir2
之后,想看所以文件可以使用以下命令:
hdfs dfs -ls -R har:///user/zoo/foo.har/
为了理解参数-p
的意义,我们再一次到达上述例子。如果你在hadoop档案中仅仅执行了ls
(而不是lsr
)
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 dir2 /user/zoo
如果你把命令改成:
hadoop archive -archiveName foo.har -p /user/ hadoop/dir1 hadoop/dir2 /user/zoo
然后到hadoop档案中使用:
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
-
classpath
用法: hadoop classpath [--glob |--jar <path> |-h |--help]
COMMAND_OPTION | 描述 |
---|---|
–glob | 扩展通配符 |
–jar path | write classpath as manifest in jar named path |
-h, --help | 打印帮助文档 |
打印获取Hadoop jar和所需库所需的类路径。 如果不带参数调用,则打印由命令脚本设置的类路径,该脚本可能在类路径条目中包含通配符。 其他选项在通配符扩展后打印类路径,或将类路径写入jar文件的清单中。 后者在无法使用通配符且扩展类路径超过支持的最大命令行长度的环境中非常有用。
后面内容目前用不上,不看了=。=