在使用mapreduce进行计算的时候,有时候会因为小文件过多,导致map任务过多,用下面的方式(CombineFileInputFormat),可以减少map数量:
\
原来flume上传好多个小文件,但是hdfs的块儿大小设置为64M,而hadoop一直非常讨厌小文件,因为小文件会占用大量的namenode空间,我一直没有弄懂怎么解决这个矛盾; 直到今天,我才懂得了,那么多的小文件,在使用的时候,是先要用archive进行归档,变成一个大文件;一般几百个文件变成一个文件,然后将所有的小文件删除,就剩下一个大文件,那么namenode的文件元数据就会大大的减少
\
可以使用 archive 归档:
hadoop archive -archiveName 2015-11-11.har -p /flumeTest/0123-62F9-5FAB-9A69-D134-8E98-3D5A-1012-035E-606F-E162/2015-11-11/ /tmp/archive/it
\
查看:hadoop dfs -ls har:///tmp/archive/it/2015-11-11.har
\
\
\