hdfs小文件问题及解决

hdfs小文件问题

1.会有什么影响

  • namenode的内存
  • 分片 => maptask的个数
  • JVM开关

①namenode的内存

一个文件块占用 namenode 150字节 的内存,
那么如果有1亿个小文件 的话,每个占namenode150字节的内存,非常大.

②分片 => maptask的个数

小文件的话不满128M,都是一个文件对应一个maptask.
如果一个maptask占用1G内存,那么你的内存就会被耗尽.

2.解决

namenode内存

  1. 第一种是采用har归档将多个小文件归档到一个文件里面,总共只占用namenode 内存的150字节.
  2. 第二种是使用自定义的Inputformat把数据放入到Sequencefile里面

分片 => maptask的个数

  1. 采用combineFileIputformat(相当于将小文件进行聚合,然后再进行切片)

JVM开关

  1. JVM重用(如果没有小文件,不要开启JVM重用)

猜你喜欢

转载自blog.csdn.net/weixin_47699191/article/details/111299820