一、Archive档案的使用
HDFS并不擅长存储小文件,因为每个文件最少一个block,每个block的元数据都会在NameNode占用内存,如果存在大量的小文件,
它们会吃掉NameNode节点的大量内存。Hadoop Archives可以有效的处理以上问题,它可以把多个文件归档成为一个文件,
归档成一个文件后还可以透明的访问每一个文件。
1.1、如何创建Archive
语法Usage: hadoop archive -archiveName name -p <parent> <src>* <dest>
1.其中-archiveName是指要创建的存档的名称。比如test.har
2.archive的名字的扩展名应该是*.har
3.-p参数指定文件存档文件(src)的相对路径。
#示例.将config2 下的所有内容归档保存到 outputdir 文件夹下
hadoop archive -archiveName config2.har -p /config2 /outputdir
1.2、如何查看归档文件的内容?
#1.直接在web browser 50070端口web查看
http://node1:50070/explorer.html#/outputdir/config2.har
#2.通过shell 命令进行查看
hadoop fs -ls /outputdir/config2.har
#3.查看 har 文件中原有的文件列表
#格式
#har://scheme-hostname:port/archivepath/fileinarchive
hadoop fs -ls har://hdfs-node1:8020/outputdir/config2.har
#4.查看 har 文件中某一个文件的内容
hadoop fs -cat har://hdfs-node1:8020/outputdir/config2.har/core-site.xml
#5.将归档的文件解压出来
#5.1 创建一个文件夹 config3
hdfs dfs -mkdir -p /config3
#5.2 将归档的文件解压到config3中
hadoop fs -cp har://hdfs-node1:8020/outputdir/config2.har/* /config3
二、Archive注意事项
-
Hadoop archives是特殊的档案格式。一个Hadoop archive对应一个文件系统目录。Hadoop archive的扩展名是*.har;
-
创建archives本质是运行一个Map/Reduce任务,所以应该在Hadoop集群上运行创建档案的命令,要提前启动Yarn集群;
-
创建archive文件要消耗和原文件一样多的硬盘空间;
-
archive文件不支持压缩,尽管archive文件看起来像已经被压缩过;
-
archive文件一旦创建就无法改变,要修改的话,需要创建新的archive文件。事实上,一般不会再对存档后的文件进行修改,因为它们是定期存档的,比如每周或每日;
-
当创建archive时,源文件不会被更改或删除;