1.小文件的危害:
1.存储:HDFS可以存储小文件,但是这个过程中,每一个小文件在存储的时候都会产生一条元数据,这也就意味着如果存储大量的小文件,就会产生大量的元数据,则意味着内存会被大量占用,此时就会导致HDFS的读写效率整体降低
2.计算:每一个小文件都会看做一个切片来进行处理,每一个切片都会对应一个MapTask。如果处理大量的小文件,这意味着要产生大量的MapTask,MapTask本质上是线程,大量的MapTask意味着产生大量的线程,如果线程数量过多,会导致服务器崩溃
2.小文件的处理手段:合并、压缩
Hadoop中提供了最原生的合并手段
Hadoop中提供了最原生的合并手段:Hadoop Archive - 官方解释是将某些小文件打成了一个har包,实际上并不是打包而是将所有的小文件合并成一个大文件
使用HAR时需要两点:
第一,对小文件进行存档后,原文件并不会自动被删除,需要用户自己删除;
第二,创建HAR文件的过程实际上是在运行一个mapreduce作业,因而需要有一个hadoop集群运行此命令。
命令:
hadoop archive -archiveName .har -p [-r ]*