hadoop之HAR文件操作命令

1.hadoop Archive的作用是什么?
2.怎么使用hadoop Archive?
3.怎么查找Archive文件?
4.怎样解压Archive文件?
5.本文还介绍了哪些命令?


https://i-blog.csdnimg.cn/blog_migrate/00b6bcbc02b928b436cd7bd45240dc9c.gif



概述
所有的Hadoop命令都通过bin/hadoop脚本调用。在没有任何参数的情况下,运行Hadoop脚本将打印该命令描述。

[Bash shell] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

[hduser@hadoop3 hadoop-2.4.1]$ bin/hadoop

Usage: hadoop [--config confdir] COMMAND

       where COMMAND is one of:

  fs                   run a generic filesystem user client

  version              print the version

  jar <jar>            run a jar file

  checknative [-a|-h]  check native hadoop and compression libraries availability

  distcp <srcurl> <desturl> copy file or directories recursively

  archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive

  classpath            prints the class path needed to get the

                       Hadoop jar and the required libraries

  daemonlog            get/set the log level for each daemon

 or

  CLASSNAME            run the class named CLASSNAME

 

Most commands print help when invoked w/o parameters.


 

字段

描述

--config confdir

配置文件目录,默认是:${HADOOP_HOME}/conf。

--loglevel loglevel

日志级别,有效的日志级别有:FATAL, ERROR, WARN, INFO, DEBUG, and TRACE. 默认是INFO。

通用选项

通用项

Description

-archives <comma separated list of archives>

用逗号分隔计算中未归档的文件。 仅仅针对JOB。

-conf <configuration file>

制定应用程序的配置文件Specify an application configuration file.

-D <property>=<value>

使用给定的属性值。

-files <comma separated list of files>

用逗号分隔的文件,拷贝到Map reduce机器,仅仅针对JOB

-jt <local> or <resourcemanager:port>

指定一个ResourceManager. 仅仅针对JOB。

-libjars <comma seperated list of jars>

将用逗号分隔的jar路径包含到classpath中去,仅仅针对JOB。



执行所有命令都是通过hadoop shell的命令的,可以分为用户命令和管理员命令。



用户命令用于Hadoop集群用户命令。

Archivehadoop Archive是一个高效地将小文件放入HDFS块中的文件存档文件格式,它能够将多个小文件打包成一个后缀为.har文件,这样减少namenode内存使用的同时,仍然允许对文件进行透明的访问。


https://i-blog.csdnimg.cn/blog_migrate/cd10942555add42fe7d06fbc4ee57f56.png

1.png(17.07 KB, 下载次数: 1)

下载附件 保存到相册

2015-8-19 17:16 上传




hadoop Archive目录包含元数据文件( _index 和 _masterindex)和数据文件(part-*),这个_index文件包含了所有文件的名称和他对应part文件的位置。

(1)怎么使用Archive
使用:hadoop archive -archiveName name -p <parent> [-r <replication factor>] <src>* <dest>

-archiveName 你需要创建的archive的文件名, 例如:foo.har. 名字应该用*.har后缀。<parent>是指定Archive文件的相对路径,例如:-p /foo/bar a/b/c e/f/g
这里 /foo/bar是a/b/c和e/f/g两个相对路径的福父路径. 注意:Archive是MapReduce创建了。所以要在map reduce集群环境下运行它。

-r  指示所需的复制因子;如果该可选参数未指定,将使用10的复制因子。

例如:将/user/fish/arch/test1目录下的文件归档到/user/tom/test33文件夹下:hadoop archive -archiveName test.har -p  /user/fish  arch/test1/  test2
例如:使用通配符,将/user/fish/2015 10,11,12月归档到/user/test33文件夹下:

hadoop archive -archiveName combine.har -p /user/fish2015 1[0-2] /user/test33

例如:不指定归档目录,直接归档parent目录:/user/fish/目录到/user/test33文件夹下:
hadoop archive -archiveName combine.har -p /user/fish /user/test33


例如:归档多个目录,归档/user/fish/目录下的111,222,333目录到/user/test33文件夹下:
hadoop archive -archiveName combine.har -p /user/fish/ 111 222 333 /user/test33


(2)怎么查找Archive文件

[Bash shell] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

[root@hadoopcluster79 bin]# ./hadoop fs -ls /test2/test.har/

Found 4 items

-rw-r--r--   3 root supergroup          0 2015-08-06 21:25 /test2/test.har/_SUCCESS

-rw-r--r--   5 root supergroup        306 2015-08-06 21:25 /test2/test.har/_index

-rw-r--r--   5 root supergroup         22 2015-08-06 21:25 /test2/test.har/_masterindex

-rw-r--r--   3 root supergroup     299521 2015-08-06 21:25 /test2/test.har/part-0

[root@hadoopcluster79 bin]# ./hadoop fs -ls har:test2/test.har/

Found 3 items

-rw-r--r--   3 root supergroup     293563 2015-08-06 21:22 har:///test2/test.har/bi-analy-all.log

-rw-r--r--   3 root supergroup       1953 2015-08-06 21:21 har:///test2/test.har/file.txt

-rw-r--r--   3 root supergroup       4005 2015-07-16 17:34 har:///test2/test.har/seq.txt




(3)怎样解压Archive文件


Since all the fs shell commands in the archives work transparently, unarchiving is just a matter of copying.
串行解压:
hdfs dfs -cp har:///user/zoo/foo.har/dir1 hdfs:/user/zoo/newdir
并行解压(Mapreduce),使用DistCp:
hadoop distcp har:///user/zoo/foo.har/dir1 hdfs:/user/zoo/newdir

checknative使用: hadoop checknative [-a] [-h]
 

命令参数

描述

-a

核对所有libraries的可用性

-h

打印帮助

这个命令用来核对可用的本地Code,默认情况下只核对libhadoop的可用性。

 

[Bash shell] 纯文本查看 复制代码

?

1

2

3

4

5

6

7

8

9

[hadoop@hadoopcluster78 bin]$ hadoop checknative

15/08/07 10:48:25 WARN bzip2.Bzip2Factory: Failed to load/initialize native-bzip2 library system-native, will use pure-Java version

15/08/07 10:48:25 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library

Native library checking:

hadoop: true /home/hadoop/apache/hadoop-2.4.1/lib/native/libhadoop.so

zlib:   true /lib64/libz.so.1

snappy: false

lz4:    true revision:99

bzip2:  false



classpath

使用: hadoop classpath [--glob |--jar <path> |-h |--help]

命令参数

描述

--glob

通配符

--jar path

 

-h, --help

打印帮助信息

 

[Bash shell] 纯文本查看 复制代码

?

1

2

[hadoop@hadoopcluster78 bin]$ hadoop classpath

/home/hadoop/apache/hadoop-2.4.1/etc/hadoop:/home/hadoop/apache/hadoop-2.4.1/share/hadoop/common/lib/*:/home/hadoop/apache/hadoop-2.4.1/share/hadoop/common/*:/home/hadoop/apache/hadoop-2.4.1/share/hadoop/hdfs:/home/hadoop/apache/hadoop-2.4.1/share/hadoop/hdfs/lib/*:/home/hadoop/apache/hadoop-2.4.1/share/hadoop/hdfs/*:/home/hadoop/apache/hadoop-2.4.1/share/hadoop/yarn/lib/*:/home/hadoop/apache/hadoop-2.4.1/share/hadoop/yarn/*:/home/hadoop/apache/hadoop-2.4.1/share/hadoop/mapreduce/lib/*:/home/hadoop/apache/hadoop-2.4.1/share/hadoop/mapreduce/*:/home/hadoop/apache/hadoop-2.4.1/contrib/capacity-scheduler/*.jar



credential使用: hadoop credential <subcommand> [options]

命令参数

描述

create alias [-provider provider-path]                                                   

提示证书被存储为指定别名的用户。如果没有-provider选项的话,那么将会默认使用core-site.xml文件中hadoop.security.credential.provider.path项对应的值。

delete alias [-provider provider-path] [-f]

删除与所提供的别名对应的证书文件。如果没有-provider选项的话,那么将会默认使用core-site.xml文件中hadoop.security.credential.provider.path项对应的值。这项操作需要通过用户的确认,除非使用了-f选项。

list [-provider provider-path]

列出所有的证书别名。如果没有-provider选项的话,那么将会默认使用core-site.xml文件中hadoop.security.credential.provider.path项对应的值。


该命令在凭证提供者内部管理凭证(credentials),密码(passwords)和秘密(secrets)。

Hadoop的CredentialProvider API支持应用程序拆分,并且要求拆分后的应用如何储存所需的密码(passwords)和秘密(secrets)。为了指明一个Provider的位置和类型,需要在core-site.xml添加hadoop.security.credential.provider.path配置项,或者通过指令中-provider命令选项进行设置。Provider路径是一串以逗号分割的URL字符串。这些字符串会说明Provider的类型和位置,举个例子:

[Bash shell] 纯文本查看 复制代码

?

1

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.jcek也是一个Java Keystore Provider。

当使用credential命令时,它通常要提供密码(password)或秘密(secret)给一个特定的凭证存储provider。为了清晰的表明要显示使用哪个provider存储,可以在命令中使用-provider选项。否则,给定多个provider的时候,则使用的哥非持久的provider,这可能不是你预期的
例如:hadoop credential list -provider jceks://file/tmp/test.jceks

distcp递归的拷贝文件或者目录。查看上面的示例。


fs和hdfs脚本的dfs类似

jar使用: hadoop jar <jar> [mainClass] args...
运行一个jar文件


key通过KeyProvider管理秘钥

trace查看和修改Hadoop跟踪(tracing)设置。查看:跟踪(tracing)指南。

version查看hadoop版本

[Bash shell] 纯文本查看 复制代码

?

1

2

3

4

5

6

7

[hadoop@hadoopcluster78 bin]$ hadoop version

Hadoop 2.4.1

Subversion Unknown -r Unknown

Compiled by root on 2014-07-13T01:39Z

Compiled with protoc 2.5.0

From source with checksum bb7ac0a3c73dc131f4844b873c74b630

This command was run using /home/hadoop/apache/hadoop-2.4.1/share/hadoop/common/hadoop-common-2.4.1.jar



CLASSNAME
使用: hadoop CLASSNAME
运行一个名字叫 CLASSNAME的类。


用户命令对于hadoop集群管理员很有用的一些命令。


daemonlog用以设置或获取指定后台进程的日志级别

使用:
hadoop daemonlog -getlevel <host:httpport> <classname>
hadoop daemonlog -setlevel <host:httpport> <classname> <level>

COMMAND_OPTION

Description

-getlevel host:httpport classname

打印运行在<host:port>的守护进程的日志级别。这个命令内部会连接http://<host:port>/logLevel?log=<name>

-setlevel host:httpport classname level

设置运行在<host:port>的守护进程的日志级别。这个命令内部会连接http://<host:port>/logLevel?log=<name>

例如:

[Bash shell] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

[root@hadoopcluster78 ~]# hadoop daemonlog -setlevel hadoopcluster78:50070 org.apache.hadoop.hdfs.server.namenode.NameNode WARN

Connecting to http://hadoopcluster78:50070/logLevel?log=org.apache.hadoop.hdfs.server.namenode.NameNode&level=WARN

Submitted Log Name: org.apache.hadoop.hdfs.server.namenode.NameNode

Log Class: org.apache.commons.logging.impl.Log4JLogger

Submitted Level: WARN

Setting Level to WARN ...

Effective level: WARN

[root@hadoopcluster78 ~]# hadoop daemonlog -getlevel hadoopcluster78:50070 org.apache.hadoop.hdfs.server.namenode.NameNode

Connecting to http://hadoopcluster78:50070/logLevel?log=org.apache.hadoop.hdfs.server.namenode.NameNode

Submitted Log Name: org.apache.hadoop.hdfs.server.namenode.NameNode

Log Class: org.apache.commons.logging.impl.Log4JLogger

Effective level: WARN

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值