HDFS小文件处理解决方案总结+FaceBook(HayStack) + 淘宝(2)

三、HDFS自带的小文件存储解决方案

对于小文件问题,Hadoop自身提供了三种解决方案:Hadoop Archive、 Sequence File 和 CombineFileInputFormat

(1) Hadoop Archive

DFS小文件处理解决方案总结+FaceBook(HayStack) + 淘宝(TFS)

归档为bar.har文件,该文件的内部结构为:

DFS小文件处理解决方案总结+FaceBook(HayStack) + 淘宝(TFS)

创建存档文件的问题:

1、存档文件的源文件目录以及源文件都不会自动删除需要手动删除

2、存档的过程实际是一个mapreduce过程,所以需要需要hadoop的mapreduce的支持

3、存档文件本身不支持压缩

4、存档文件一旦创建便不可修改,要想从中删除或者增加文件,必须重新建立存档文件

5、创建存档文件会创建原始文件的副本,所以至少需要有与存档文件容量相同的磁盘空间

(2) Sequence File

sequence file由一系列的二进制的对组成,其中key为小文件的名字,value的file content。

DFS小文件处理解决方案总结+FaceBook(HayStack) + 淘宝(TFS)

创建sequence file的过程可以使用mapreduce工作方式完成

对于index,需要改进查找算法

对小文件的存取都比较自由,也不限制用户和文件的多少,但是该方法不能使用append方法,所以适合一次性写入大量小文件的场景

(3) CombineFileInputFormat

CombineFileInputFormat是一种新的inputformat,用于将多个文件合并成一个单独的split,另外,它会考虑数据的存储位置。

该方案版本比较老,网上资料甚少,从资料来看应该没有第二种方案好。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/567d8282da57fd50248938993581382f.html