hdfs为啥不擅长存储大量的小文件

2019/2/25 星期一

hdfs为啥不擅长存储大量的小文件

hdfs的优点和缺点
优点:
1、可构建在廉价机器上
    通过多副本提高可靠性,提供了容错和恢复机制
    服务器节点的宕机是常态 必须理性对象
2、高容错性
数据自动保存多个副本,副本丢失后,自动恢复
    HDFS的核心设计思想: 分散均匀存储 + 备份冗余存储
3、适合批处理
移动计算而非数据,数据位置暴露给计算框架
    海量数据的计算 任务 最终是一定要被切分成很多的小任务进行
4、适合大数据处理
    GB、TB、甚至 PB 级数据,百万规模以上的文件数量,10K+节点规模
5、流式文件访问
     一次性写入,多次读取,保证数据一致性
hdfs缺点
1、低延迟数据访问
    比如毫秒级 低延迟与高吞吐率
2、小文件存取
    占用 NameNode 大量内存 150b* 1000W = 15E,1.5G 寻道时间超过读取时间
3、并发写入、文件随机修改
    一个文件只能有一个写者 仅支持 append

FastDFS与hadoop的区别
主要是定位和应用场合不一样。
hadoop的文件系统HDFS主要解决并行计算中分布式存储数据的问题。其单个数据文件通常很大,采用了分块(切分)存储的方式;
FastDFS主要用于大中网站,为文件上传和下载提供在线服务。所以在负载均衡、动态扩容等方面都支持得比较好,FastDFS不会对文件进行分快(切分)存储。

hdfs为什么不适合大量小文件的存储
namenode在内存中存储metadata。每个小文件都占150bytes.所以很多小文件的话, 内存就吃紧了。
不是不适合存小文件,而是不适合纯海量小文件。。。。 文件数不能太多。。。
管理每个文件需要占用master机器一定内存,管理文件过多,内存占用过多,会使集群运行变慢。
文件数过多 ,占用的内存也相应的多了,这样就会影响系统的处理速度,如果是少量的大容量文件,占用内存相应较低,处理速度就会更快
HDFS无法高效存储大量小文件,如何处理好小文件? https://blog.csdn.net/zyd94857/article/details/79946773
hadoop SequenceFile详解:https://blog.csdn.net/bitcarmanlee/article/details/78111289

(1)HDFS不适合大量小文件的存储,因namenode将文件系统的元数据存放在内存中,因此存储的文件数目受限于 namenode的内存大小。HDFS中每个文件、目录、数据块占用150Bytes。如果存放的文件数目过多的话会占用很大的内存
(2)HDFS适用于高吞吐量,而不适合低时间延迟的访问。如果同时存入大量的小文件会花费很长的时间
(3) 流式读取的方式,不适合多用户写入,以及任意位置写入。如果访问小文件,则必须从一个datanode跳转到另外一个datanode,这样大大降低了读取性能。

主要是定位和应用场合不一样。
hadoop的文件系统HDFS主要解决并行计算中分布式存储数据的问题。其单个数据文件通常很大,采用了分块(切分)存储的方式;
FastDFS主要用于大中网站,为文件上传和下载提供在线服务。所以在负载均衡、动态扩容等方面都支持得比较好,FastDFS不会对文件进行分快(切分)存储。

参考链接为:https://www.cnblogs.com/qingyunzong/p/8535995.html
这是和HDFS系统底层设计实现有关系的,HDFS本身的设计就是用来解决海量大文件数据的存储.,他天生喜欢大数据的处理,大文件存储在HDFS中,会被切分成很多的小数据块,任何一个文件不管有多小,都是一个独立的数据块,而这些数据块的信息则是保存在元数据中的,在之前的博客HDFS基础里面介绍过在HDFS集群的namenode中会存储元数据的信息,这里再说一下,元数据的信息主要包括以下3部分:
  1)抽象目录树
  2)文件和数据块的映射关系,一个数据块的元数据大小大约是150byte
  3)数据块的多个副本存储地

而元数据的存储在磁盘(1和2)和内存中(1、2和3),而服务器中的内存是有上限的,举个例子:

有100个1M的文件存储进入HDFS系统,那么数据块的个数就是100个,元数据的大小就是100*150byte,消耗了15000byte的内存,但是只存储了100M的数据。

有1个100M的文件存储进入HDFS系统,那么数据块的个数就是1个,元数据的大小就是150byte,消耗量150byte的内存,存储量100M的数据。

提示:
很多资料上说HDFS文件系统不适用于存储小文件。在我的经验中,我认为hdfs文件系统不是不能存小文件,而是不擅长存储大量的小文件。

猜你喜欢

转载自blog.51cto.com/12445535/2354951