HDFS并不擅长存储小文件,因为每个文件最少一个block,每个block的元数据都会在namenode节点占用内存,如果存在这样大量的小文件,它们会吃掉namenode节点的大量内存。Hadoop Archive是一个高效地将小文件放入HDFS块中的文件存档文件格式,它能够将多个小文件打包成一个后缀为.har文件,这样减少namenode内存使用的同时,仍然允许对文件进行透明的访问。
Hadoop Archive目录包含metadata(in the form of _index and _masterindex)和data (part-*)文件。The _index file contains the name of the files that are part of the archive and the location within the part files.
Hadoop官网的Hadoop Archives Guide
1. 怎么使用Archive
用法:hadoop archive -archiveName name -p <parent> [-r <replication factor>] <src>* <dest>
-archiveName用来指定要创建的archive的文件名,必须以.har结尾,例如:foo.har;
-p用来指定Archive文件的父路径,指定了之后