Hadoop学习之小文件及其处理方式
小文件定义:
小文件是远小于hdfs块大小的文件,在hdfs上任何一个文件都有对应的元数据信息
小文件的坏处:
1、小文件太多,响应的元数据就会多,占用空间太多且namenode维护起来不方便
2、小文件太多,启动的MapTask就会过,增加开销
处理小文件的方式:
一、Har归档
HDFS存档文件对内还是一个独立文件,对NameNode而言却是一个整体,减少NameNode的内存
1、归档:
hadoop archive -archiveName <归档文件名.har> -p <源文件路径> <目标地址>
2、查看归档文件
hadoop fs -ls -R har://<har文件>
3、解归档
hadoop fs -cp har://<要解归档的小文件> <目标路径>
二、CombineTextInputFormat
1、将默认的TextInputFormat替换为CombineTextInputFormat类
2、自定义虚拟存储切片最大值
三、Sequence File(自定义InputFormat实现类)
1、Swquence File由一系列的二进制k/v组成,如果key文件名,value为文件内容,则可以将小文件合并成一个大文件
2、因为设置了不可切片,最终所有文件都封装到了value中
四、开启JVM重用
1、一个Map运行在一个JVM上,开启重用的话,该Map在JVM上运行完毕后,JVM会继续运行其他Map
2、对于大量小文件Job,可以开启JVM重用会减少45%运行时间
3、mapreduce.job.jvm.numtasks的值在10-20之间。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步