hadoop archive 详解《转载》
(2016-05-06 15:10:12)
1.hadoop Archive的作用是什么?
2.怎么使用hadoop Archive?
3.怎么查找Archive文件?
4.怎样解压Archive文件?
5.本文还介绍了哪些命令?
概述
所有的Hadoop命令都通过bin/hadoop脚本调用。在没有任何参数的情况下,运行Hadoop脚本将打印该命令描述。
通用选项
执行所有命令都是通过hadoop shell的命令的,可以分为用户命令和管理员命令。
用户命令 用于Hadoop集群用户命令。
Archive hadoop Archive是一个高效地将小文件放入HDFS块中的文件存档文件格式,它能够将多个小文件打包成一个后缀为.har文件,这样减少namenode内存使用的同时,仍然允许对文件进行透明的访问。
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文件
(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
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
version
jar
file
checknative[-a|-h]
distcpcopy
file
or directories recursively
archive-archiveName NAME -p * create a hadoop archive
classpath
Hadoopjar and the required libraries
daemonlog
/set
the log level
for
each daemon
or
CLASSNAME
Most commands print help when invoked w
/o
parameters.
|
执行所有命令都是通过hadoop shell的命令的,可以分为用户命令和管理员命令。
用户命令 用于Hadoop集群用户命令。
Archive hadoop Archive是一个高效地将小文件放入HDFS块中的文件存档文件格式,它能够将多个小文件打包成一个后缀为.har文件,这样减少namenode内存使用的同时,仍然允许对文件进行透明的访问。
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
例如:将/user/fish/arch/test1目录下的文件归档到/user/tom/test33文件夹下:hadoop archive -archiveName test.har -p
例如:使用通配符,将/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--
/test2/test
.har
/_SUCCESS
-rw-r--r--
/test2/test
.har
/_index
-rw-r--r--
/test2/test
.har
/_masterindex
-rw-r--r--
/test2/test
.har
/part-0
[root@hadoopcluster79 bin]
#./hadoop fs -ls har:test2/test.har/
Found 3 items
-rw-r--r--
///test2/test
.har
/bi-analy-all
.log
-rw-r--r--
///test2/test
.har
/file
.txt
-rw-r--r--
///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