弱弱地问下:Hadoop为什么就不适合处理小文件

弱弱地问下:Hadoop为什么就不适合处理小文件,第1张

因为namenode在内存中存储hdfs中的文件信息。每个文件、目录或分区(block)需要大约150B,所以如果有很多小文件,那么namenode的内存将会承担很大压力。比如有100万个文件,每个文件一个block,那么这就需要300M内存。若文件数量达到十亿级,则没有足够大的内存来应付它了。

因为在hdfs 中,数据的元数据信息是保存在NameNode上的,hdfs本身的作用就是用来存储海量文件的,首先小文件过多的话,会增加NameNode 的压力,,因为NameNode是要接收集群中所有的DataNode的心跳信息,来确定元数据的信息变化的,另外,文件中可使用的block块的个数是有限制的,hadoop用来处理数据的话,小文件的延迟,和数据量虽然很小,但是有些地方和大文件所耗的时间相同,所以最好做优化,避免这种情况的发生。

命令:hadoop fs -rmr /home/mm/lily2(要求是你把hadoop的bin加到PATH中,并开启hadoop)
rm -rf /home/mm/lily2(这是删除linux文件系统文件夹)。
删除目录
rd /s /q "c:\hello"
rem 加引号可以防止因路径中有空格而出错
rem 上面的代码意为:删除c:\hello目录下所有的内容(包括"c:\hello")
删除文件
del /f /q /s "c:\hello\"
rem 删除c;\hello文件夹下所有的文件,包括子文件夹的内容,(不包括子文件夹,也不包括c:\hello文件夹)
rem 文件夹=目录

Hadoop支持的文件系统由很多(见下图),HDFS只是其中一种实现。Java抽象类 orgapachehadoopfsFileSystem 定义了Hadoop中一个文件系统的客户端接口,并且该抽象类有几个具体实现。Hadoop一般使用URI(下图)方案来选取合适的文件系统实例进行交互。

特别的,HDFS文件系统的 *** 作可以使用 FsSystem shell 、客户端(>

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/10556279.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-09
下一篇2023-05-09

发表评论

登录后才能评论

评论列表(0条)

    保存