HDFS小文件弊端及优化方法

HDFS小文件弊端及优化方法

一、HDFS小文件弊端

HDFS上每个文件都要在NameNode上建立一个索引,这个索引的大小约为150byte,这样当小文件比较多的时候,就会产生很多的索引文件,一方面会大量占用NameNode的内存空间,另一方面就是索引文件过大使得索引速度变慢。

二、HDFS小文件解决方案

  1. 小文件的优化无非以下几种方式:
    1>1 在数据采集的时候,就将小文件或小批数据合成大文件再上传HDFS。
    1>2 在业务处理之前,在HDFS上使用MapReduce程序对小文件进行合并。
    1>3 在MapReduce处理时,可采用CombineTextInputFormat提高效率。

  2. Hadoop Archive(☆):star:
    是一个高效地将小文件放入 HDFS 块中的文件存档工具,它能够将多个小文件打包成一个 HAR 文件,这样就少了 Namenodee 的内存使用。
    Hadoop Archive操作具体详见:http://blog.edkso.cn/?p=589

    1. Sequence File
      Sequence Filel 由一系列的二进制 key/value组成,如果key为文件名,value 为文件内容,则可以将大批小文件合并成一个大文件。

    2. Combine Filelnputformat
      Combinefilelnputformat 是一种新的 Inputformat,用于将多个文件合并成个单独的 Split,另外,它会考虑数据的存储位置。

    3. 开启 JVM 重用
      对于大量小文件 Job,可以开启 JM 重用会減少 45%运行时间
      JVM重用原理:一个Map运行在一个JVM上,开启重用的话,该Map在JVM上运行完毕后,JVM继续运行其他Map。
      具体设置:mapreduce.job.jvm.numtasks值在10-20之间。

版权声明:
作者:十下
链接:http://blog.edkso.cn/?p=585
来源:十下博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>