HDFS和MR主要针对大数据文件来设计,在小文件处理上效率低.
解决方法是选择一个容器,将这些小文件包装起来,将整个文件作为一条记录,可以获取更高效率的储存和处理,避免多次打开关闭流耗费计算资源.
hdfs提供了两种类型的容器 SequenceFile和MapFile
小文件问题解决方案
1、在原有HDFS基础上添加一个小文件处理模块,具体操作流程如下:
2、当用户上传文件时,判断该文件是否属于小文件。
如果是,则交给小文件处理模块处理。
否则,交给通用文件处理模块处理。
在小文件模块中开启一定时任务,其主要功能是当模块中文件总size大于HDFS上block大小的文件时,则通过SequenceFile组件以文件名做key,相应的文件内容为value将这些小文件一次性写入hdfs模块。
3、同时删除已处理的文件,并将结果写入数据库。
4、当用户进行读取操作时,可根据数据库中的结果标志来读取文件。
SequenceFile
Sequence file由一系列的二进制key/value组成.
如果key为小文件名,