Hadoop archive命令

Posted 健哥说编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop archive命令相关的知识,希望对你有一定的参考价值。


Hadoop archive命令

hadoop不适合小文件的存储,小文件本省就占用了很多的metadata,就会造成namenode越来越大。Hadoop Archives的出现视为了缓解大量小文件消耗namenode内存的问题。

采用ARCHIVE 不会减少 文件存储大小,只会压缩NAMENODE 的空间使用

 

概述

Hadoop存档是特殊格式的存档。Hadoop存档映射到文件系统目录。Hadoop归档文件总是带有* .har扩展名。Hadoop存档目录包含元数据(采用_index_masterindex形式)数据部分datapart- *)文件。_index文件包含归档文件的名称和部分文件中的位置。

 

如何创建档案

用法:hadoop archive -archiveName  归档名称 -p 父目录 [-r <复制因子>]  原路径(可以多个)  目的路径。

目前在hdfs上存在以下文件:

[wangjian@hadoop41 ~]$ hdfs dfs -ls -R /test

-rw-r--r--   1 wangjian supergroup       1384 2018-04-18 17:26 /test/a.txt

-rw-r--r--   1 wangjian supergroup       1205 2018-04-18 17:26 /test/b.txt

 

现在我们可以将上面的a.txtb.txt创建一个归档文件:

[wangjian@hadoop41 ~]$ hadoop archive -archiveName a1.har  -p  /test   /har

说明:

-archiveName 参数用于指定归档文件为a1.har

-p 用于指定归档文件的父目录为 hdfs文件系统上的test目录。在这个参数后,还可以通过空格或是通配符,指定需要归档的文件,默认将父目录下的所有文件都归档。

/har为任意指定一个hdfs文件系统的目录,用于保存a1.har文件。

 

查看归档文件

可见,就是一个扩展名为har的文件:

[wangjian@hadoop41 ~]$ hdfs dfs -ls /har

Found 1 items

drwxr-xr-x   - wangjian supergroup          0 2018-04-18 17:40 /har/a1.har

 

查看归档文件中的内容:

[wangjian@hadoop41 ~]$ hdfs dfs -ls /har/a1.har

Found 4 items

-rw-r--r--   1 wangjian supergroup          0 2018-04-18 17:40 /har/a1.har/_SUCCESS

-rw-r--r--   5 wangjian supergroup        200 2018-04-18 17:40 /har/a1.har/_index

-rw-r--r--   5 wangjian supergroup         23 2018-04-18 17:40 /har/a1.har/_masterindex

-rw-r--r--   1 wangjian supergroup       2589 2018-04-18 17:40 /har/a1.har/part-0

上面part-0为源文件的所有内容。

_index保存了文件下标信息。

 

也可以使用har前缀,查看归档文件中的内容,注意har前缀:

[wangjian@hadoop41 ~]$ hdfs dfs -ls har:/har/a1.har

Found 2 items

-rw-r--r--   1 wangjian supergroup       1384 2018-04-18 17:26 har:///har/a1.har/a.txt

-rw-r--r--   1 wangjian supergroup       1205 2018-04-18 17:26 har:///har/a1.har/b.txt

 

甚至可以查看归档文件中的内容:

[wangjian@hadoop41 ~]$ hdfs dfs -cat har:/har/a1.har/a.txt

 

将本地文件归档

使用file:///前缀可以将本地文件归档。这样归档可以真实的减少NameNode元数据的保存空间:

[wangjian@hadoop41 ~]$ hadoop archive -archiveName a2.har -p file:///home/wangjian a.txt b.txt /har

 

查看里面的文件:

[wangjian@hadoop41 ~]$ hdfs dfs -ls har:/har/a2.har

Found 2 items

-rw-r--r--   1 wangjian supergroup       1384 2018-04-18 16:53 har:///har/a2.har/a.txt

-rw-r--r--   1 wangjian supergroup       1205 2018-04-18 16:55 har:///har/a2.har/b.txt

 

 

解除归档

由于档案中的所有fs shell命令都是透明的,因此取消存档只是复制的问题。

 

依次取消存档:

 

hadoop fs -cp har:/user/admin/test3.har /user/admin/oo


 

要并行解压缩,请使用DistCp:

 

hadoop distcp har:/user/admin/test3.har /user/admin/oo2

 


以上是关于Hadoop archive命令的主要内容,如果未能解决你的问题,请参考以下文章

0006 - Hadoop&HDFS命令指南大全

hadoop文件系统上的小文件合并-Hadoop Archives

Hadoop HDFS Hadoop Archives

Hadoop 如何使用 Archives 实现归档

spark 与 Hadoop 融合后 Neither spark.yarn.jars nor spark.yarn.archive is set

Hadoop-入门示例