小文件
- 小文件指的是远小于hdfs块大小的文件,在hdfs 上任何一个文件都有其相应的元数据信息,小文件太多,相应的元数据就会多,namenode维护起来不方便
- 小文件太多,相应的启动的maptask 就会很多,会增加开销
hive小文件问题
- 输入的小文件太多
sethive.input.format=org.apache.Hadoop.hive.ql.io.CombineHiveInputFormat
- 输出的小文件太多
set hive.merge.mapfiles=true; // map only job结束时合并小文件
set hive.merge.mapredfiles=true; // 合并reduce输出的小文件
set hive.merge.smallfiles.avgsize=256000000; //当输出文件平均大小小于该值,启动新job合并文件
sethive.merge.size.per.task=64000000; //合并之后的每个文件大小64M
mapreduce 小文件问题
- CombineFileInputFormat
- 自定义InputFormat
- hadoop Archive
- Sequence file