1:项目背景
hadoop的小文件管理是一个比较头疼的事情。项目最开始的时候大数据namenode与datanode混布,出现过一次namenode内存不够用,集群所有任务失败。为此单独起一个项目治理小文件,并且迁移datanode,namenode 单独部署。
2:HDFS简介
HDFS是Hadoop核心组成, 是分布式存储服务。由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。基本都是一个NameNode+多个DataNode组成。NameNode是集群的主节点, DataNode是集群的从节点。 Namenode 负责元数据管理,维护文件和目录树,响应Client请求;Datanode负责实际数据存储。
3:HDFS Block 简介
Block是文件块,HDFS中是以Block为单位进行文件的管理的。一个文件可能有多个块,每个块默认是3个副本,这些块分别存储在不同机器上。块与文件之前的映射关系会定时上报Namenode。HDFS中一个块的默认大小是64M,其大小由参数dfs.block.size控制。
4:小文件如何产生以及影响
1:动态分区插入数据,产生大量的小文件,从而导致 map 数量剧增。
2:reduce 数量越多,小文件也越多,reduce 的个数和输出文件个数一致。
3:数据源本身就是大量的小文件。
在运行时,HDFS中每个文件、目录和数据块的元数据信息(大约150