HDFS存入大量元数据的影响
HDFS存入大量小文件,有什么影响?
元数据层面:每个小文件都有一份元数据,其中包括文件路径,文件名,所有者,所属组,权限,创建时间等,这些信息都保存在 Namenode 内存中(大的文件块和小的文件块都占用NameNode150字节的内存)。
所以小文件过多,会占用 Namenode 服务器大量内存,影响 Namenode 性能和使用寿命。
计算层面:默认情况下MR会对每个小文件启用一个MapTask计算,非常影响计算性能。同时也影响磁盘寻址时间。
产生的原因
官方默认的这三个参数配置写入HDFS后会产生小文件:
Name | Default | Description |
---|---|---|
hdfs.rollInterval | 30 | Number of seconds to wait before rolling current file (0 = never roll based on time interval) |
hdfs.rollSize | 1024 | File size to trigger roll, in bytes (0: never roll based on file size) |
hdfs.rollCount | 10 | Number of events writ |