Hadoop 2.7.2 存档(Archive) har文件



简介:

Hadoop存档是特殊格式的存档。 Hadoop存档映射到文件系统目录。 Hadoop存档总是具有* .har扩展名。 Hadoop归档目录包含元数据(以_index和_masterindex的形式)和数据(part- *)文件。 _index文件包含作为归档一部分的文件的名称和零件文件中的位置。

创建:

Usage: hadoop archive -archiveName name -p  [-r ] * 

-archiveName 是你要创建的归档的名称,例如:foo.har。必须是.har后缀名文件。parent 是指定文件应归档到的相对路径。例如:

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

这里/foo/bar 是归档路径,a/b/c和e/f/g是它的相对路径。请注意,这是一个创建归档的Map / Reduce作业。 你需要一个map reduce集群来运行这个。 有关详细示例后面的部分。
-r表示所需的复制因子; 如果未指定此可选参数,则将使用10。

如果你只想存档一个目录/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

如果没有提供方案,它假设底层文件系统。 在这种情况下,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中。归档不会删除输入文件。 如果要在创建归档后删除输入文件(以减少空间),则必须自己进行。在此示例中,由于指定了-r 3,因此将使用复制因子3。

查找存档:

在hadoop存档中查找文件与在文件系统上执行ls一样简单。 如上例所示,归档到目录/user/hadoop/dir1和/user/hadoop/dir2之后,要查看归档中的所有文件,你只需运行:

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

要理解-p参数的意义,让我们再次通过上面的例子。 如果你只是做一个ls(不是lsr)在hadoop存档使用

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

然后,ls hadoop archive 变成:

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中使用Hadoop Archives与指定不同于默认文件系统的输入文件系统一样简单。 如果你有一个hadoop存档在HDFS存储在/user/zoo/foo.har然后为了使用这个归档MapReduce输入,所有你需要指定输入目录为har:///user/zoo/foo.har。 由于Hadoop Archives作为文件系统公开,MapReduce将能够使用Hadoop Archives中的所有逻辑输入文件作为输入。


转自:https://hadoop.apache.org/docs/r2.7.2/hadoop-archives/HadoopArchives.html


你可能感兴趣的:(BigData)