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形式)数据部分data(part- *)文件。_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.txt和b.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命令的主要内容,如果未能解决你的问题,请参考以下文章
hadoop文件系统上的小文件合并-Hadoop Archives
spark 与 Hadoop 融合后 Neither spark.yarn.jars nor spark.yarn.archive is set