小文件给Hadoop集群带来的影响

1 小文件的定义

小文件指的是那些size比HDFS的block size(默认128M)小的多的文件。Hadoop适合处理少量的大文件,而不是大量的小文件。

2 小文件带来的问题

  •        首先,在HDFS中,任何block,文件或者目录在内存中均以对象的形式存储,每个对象约占150byte,如果有1000 0000个小文件,每个文件占用一个block,则namenode大约需要2G空间。如果存储1亿个文件,则namenode需要20G空间。这样namenode内存容量严重制约了集群的扩展。
  •        其次,访问大量小文件速度远远小于访问几个大文件。HDFS最初是为流式访问大文件开发的,如果访问大量小文件,需要不断的从一个datanode跳到另一个datanode,严重影响性能。
  •        最后,处理大量小文件速度远远小于处理同等大小的大文件的速度。每一个小文件要占用一个slot,而task启动(JVM启动销毁)将耗费大量时间甚至大部分时间都耗费在启动task和释放task上。

猜你喜欢

转载自blog.csdn.net/godlovedaniel/article/details/114378020
今日推荐