小文件产生的原因
批处理、离线计算都会有小文件产生;
数据源本身就有很多小文件;
MapReduce和Spark作业时,没有设置好ReduceTask个数或者Spark最后一层Task的数量。
小文件的危害
元数据存储在内存中,影响Namenode的寿命;
每一个小文件都会产生一个map任务,影响计算引擎的任务数量。
如何解决小文件的影响
合并小文件,对小文件进行har归档;
采用CombineFileInputformat,把所有文件放到一起统一切片;
开启JVM重用(开启JVM,不关闭,直到所有任务都做完了,再关闭)【task必须属于同一个job】,慎用,只适合小文件多的场景