hadoop archive 详解《转载》

来源:互联网 发布:淘宝店铺装修广告图片 编辑:程序博客网 时间:2024/05/18 20:07

hadoop archive 详解《转载》

 (2016-05-06 15:10:12)
转载
  
1.hadoop Archive的作用是什么?
2.怎么使用hadoop Archive?
3.怎么查找Archive文件?
4.怎样解压Archive文件?
5.本文还介绍了哪些命令?






概述
所有的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
       whereCOMMAND is one of:
  fs                  run a generic filesystem user client
  version             print the version
  jar           run a jar file
  checknative[-a|-h]  check native hadoop and compressionlibraries availability
  distcpcopyfile or directories recursively
  archive-archiveName NAME -p * create a hadoop archive
  classpath           prints the class path needed to get the
                       Hadoopjar and the required libraries
  daemonlog           get/setthe log level for each daemon
 or
  CLASSNAME           run the class named CLASSNAME
 
Most commands print help when invoked w/oparameters.



字段描述--config confdir配置文件目录,默认是:${HADOOP_HOME}/conf。--loglevel loglevel日志级别,有效的日志级别有:FATAL, ERROR, WARN, INFO, DEBUG, and TRACE. 默认是INFO。通用选项
通用项Description-archives用逗号分隔计算中未归档的文件。 仅仅针对JOB。-conf制定应用程序的配置文件Specify an application configuration file.-D =使用给定的属性值。-files用逗号分隔的文件,拷贝到Map reduce机器,仅仅针对JOB-jt or指定一个ResourceManager. 仅仅针对JOB。-libjars将用逗号分隔的jar路径包含到classpath中去,仅仅针对JOB。

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



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

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


hadoop <wbr>archive <wbr>详解《转载》 


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

(1)怎么使用Archive
使用:hadoop archive -archiveName name -p [-r ] *

-archiveName 你需要创建的archive的文件名, 例如:foo.har. 名字应该用*.har后缀。是指定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 rootsupergroup         0 2015-08-06 21:25/test2/test.har/_SUCCESS
-rw-r--r--   5 rootsupergroup       306 2015-08-06 21:25/test2/test.har/_index
-rw-r--r--   5 rootsupergroup        22 2015-08-06 21:25/test2/test.har/_masterindex
-rw-r--r--   3 rootsupergroup    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 rootsupergroup    293563 2015-08-06 21:22 har:///test2/test.har/bi-analy-all.log
-rw-r--r--   3 rootsupergroup      1953 2015-08-06 21:21 har:///test2/test.har/file.txt
-rw-r--r--   3 rootsupergroup      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
0 0
原创粉丝点击