简介:
Hadoop存档是特殊格式的存档。 Hadoop存档映射到文件系统目录。 Hadoop存档总是具有* .har扩展名。 Hadoop归档目录包含元数据(以_index和_masterindex的形式)和数据(part- *)文件。 _index文件包含作为归档一部分的文件的名称和零件文件中的位置。
创建:
Usage: hadoop archive -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作业。 你需要一个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
查找存档:
hdfs dfs -ls -R har:///user/zoo/foo.har/
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 hadoop/dir2 /user/zoo
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。