当前位置:首页>正文

Hadoop存储小文件有什么问题,希望有人能回答全面些 关于hadoop小文件处理

2023-05-21 02:51:53 互联网 未知

Hadoop存储小文件有什么问题,希望有人能回答全面些

hadoop主要是hdfs和mapreduce两大框架,hdfs用来存储文件,mapreduce用来处理文件进行计算。1.首先,对于hdfs,dn负责存储文件,以及文件的副本,而nn负责存储文件的元数据,例如文件的块信息,以及位置信息等,这些数据会保存在nn的内存中,当存在很多的小文件时,每个小文件nn存储的元数据都是一样的,所以N个小文件会占用nn大量的内存,增大nn的负担。
2.而对于mapreduce来说,map的输入默认是一个输入文件对应一个map任务,所以如果不做特殊处理在使用mapreduce处理这些小文件时会一个小文件产生一个map。这样的话每个map只处理一个小文件,会造成很大的资源浪费,同时也会降低mapreduce的执行效率。
以上是我自己的理解,可能还有其他的原因。建议去网上自行搜索一些文章阅读。

关于hadoop小文件处理

这不能被实现在现有的Hadoop。
时设置的目录中,文件中的目录信息被读入Hadoop的输入已被确定
房东当时就完成所有文件的MapReduce,Hadoop的还是会等待输入,但房东可以想像,你能不能给Hadoop的信号,让他停止运行

hadoop为什么无法处理大量小文件

任何一个文件,目录和block,在HDFS中都会被表示为一个object存储在namenode的内存中,没一个object占用150 bytes的内存空间。
所以,如果有10million个文件,没一个文件对应一个block,那么就将要消耗namenode 3G的内存来保存这些block的信息。
如果规模再大一些,那么将会超出现阶段计算机硬件所能满足的极限。