Hadoop HDFS处理大量的小文件

Hadoop HDFS处理大量的小文件,第1张

文件是指文件大小明显小于HDFS上块(block)大小(默认64MB)的文件。如果存储小文件,必定会有大量这样的小文件,否则你也不会使用Hadoop(If you’re storing small files, then you probably have lots of them

(otherwise you wouldn’t turn to Hadoop)),这样的文件给hadoop的扩展性和性能带来严重问题。当一个文件的大小小于HDFS的块大小(默认64MB),就将认定为小文件否则就是大文件。为了检测输入文件的大小,可以浏览Hadoop DFS 主页 http://machinename:50070/dfshealth.jsp ,并点击Browse filesystem(浏览文件系统)。

首先,在HDFS中,任何一个文件,目录或者block在NameNode节点的内存中均以一个对象表示(元数据)(Every file, directory and block in HDFS is represented as an object in the namenode’s memory),而这受到NameNode物理内存容量的限制。每个元数据对象约占150byte,所以如果有1千万个小文件,每个文件占用一个block,则NameNode大约需要15G空间。如果存储1亿个文件,则NameNode需要150G空间,这毫无疑问1亿个小文件是不可取的。

其次,处理小文件并非Hadoop的设计目标,HDFS的设计目标是流式访问大数据集(TB级别)。因而,在HDFS中存储大量小文件是很低效的。访问大量小文件经常会导致大量的寻找,以及不断的从一个DatanNde跳到另一个DataNode去检索小文件(Reading through small files normally causes lots of seeks and lots of hopping from datanode to datanode to retrieve each small file),这都不是一个很有效的访问模式,严重影响性能。

最后,处理大量小文件速度远远小于处理同等大小的大文件的速度。每一个小文件要占用一个slot,而task启动将耗费大量时间甚至大部分时间都耗费在启动task和释放task上。

Hadoop存档文件系统通常将HDFS中的多个文件打包成一个存档文件,减少namenode内存的使用

hadoop archive命令创建HAR文件

from:https://blog.csdn.net/sunnyyoona/article/details/53870077

1、光盘、磁带存储,对于不常用的冷数据可以考虑这两种,价格便宜。

2、硬盘,小量的、常用的文件可以存,成本贵一点,容易损坏。

3、文件存储服务器,通过电脑上的客户端调取文件,现在市场上有很多产品,有不同的功能倾向,比如实惠、安全、小巧、 *** 作便捷、协作,可以根据自己的具体需求评估后选择。

哈哈~大家可以试一下我的经验,要是有用,记得给我点个赞,谢谢啦~

大量小文件建议先用压缩软件压缩打包,这样可以快速复制。

大量复制文件的快捷键Ctrl+A,Ctrl+C。

要实现大量小文件的复制,首先要将这些小文件全部放在一个文件夹,在全选复制,即进行上述 *** 作。

如果这些小文件分散在不同文件夹中,可找出他们的共同点,比如同样的后缀名,在我的电脑中搜索出来,在进行上述 *** 作。


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

原文地址: http://outofmemory.cn/tougao/11866098.html

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

发表评论

登录后才能评论

评论列表(0条)

保存