一、小文件是如何产生的
1.现在的实时场景下基于每小时的每天的和每周的计算越来越多但是产生的数据大小可能不会超过10M。
2.可能数据集本身就含有大量小文件,并未通过任何处理就拷贝到我们的HDFS当中时会产生。
3.当我们的每个reduce都会产生一个文件,或者我们产生数据倾斜时,某个reduce数据过大,则其它的数据会很小。
二、小文件产生的影响
1.NameNode:会损耗NameNode的使用寿命,因为没产生一个小文件就会产生一份元数据并存储到NameNode内存中,元数据信息包括:文件名、文件路径、所有者、所有组、权限。
2.MapReduce:每个小文件都会生成一个MapTask任务来执行,效率大大降低。
三、小文件的解决
1.进行小文件的归档
2.可以通过ConbinnerInputFormat对输入端的小文件进行预聚合
3.可以自定义Inpuformat使用serquencefile格式存储文件