您的位置 首页 大数据运维

HDFS 中小文件带来的问题以及解决方法

hadoop 中目录,文件和块都会以对象的形式保存在 namenode 的内存中, 大概每个对象会占用 150bytes. 小文件数量多会大量占用 namenode 的内存; 使 namenode 读取元数据速度变慢, 启动时间延长; 还因为占用内存过大, 导致 gc 时间增加等.

解决办法:

两个角度,

一是从根源解决小文件的产生,

二是解决不了就选择合并. 从数据来源入手, 如每小时抽取一次改为每天抽取一次等方法来积累数据量。
如果小文件无可避免, 一般就采用合并的方式解决. 可以写一个 MR 任务读取某个目录下的所有小文件, 并重写为一个大文件。

具体方法:

1.当每个小文件数据量比较小的时候,可以通过命令的方式进行小文件的合并如:

hdfs dfs -cat hdfs://mycluster/logs/*.log | hdfs dfs -appendToFile - hdfs://mycluster/logs/largeFile.log,

2.当数据量比较大的时候建议使用 MR 进行小文件的合并.

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章