设计理念
1)支持超大数据集
hdfs分布式存储,将大量的数据存放到N台机器上,每台机器存放部分数据.机器可横向扩展,所以hdfs定位就是针对超大数据集的。
2)绝对能够应对硬件的故障
hdfs将超大数据集拆分成小块, 然后每个小块在多个机器上都有副本, 如果某个机器硬件故障, 这台机器上的数据可以从其他机器的备份上回复回来,并且是自动对故障进行恢复
3)流式数据处理
hdfs读写文件系统上的数据的时候,是基于流的。hdfs用这个所谓的流式数据处理,其实主要就是为了保证高吞吐量的文件读写,而不是低延迟的文件读写。
4)简化的数据一致性模型
同时支持对文件的写和读,很麻烦的,大量的并发冲突问题
因为这个hdfs是为了支持超大数据集,分布式存储,离线批量处理的,所以说,他的数据一致性模型是简化的,在他这里的话,一个文件只能一次写入,然后之后就只能追加,不能随便改之前的数据了
他的理念就是,write-once,ready-many-times,一次写,然后多次读,这样就没有数据读写并发冲突,以及数据如何维护一致性的问题了。
5)尽量移动计算,但是不要移动数据
这个意思就是说,如果你要对分布在多台机器上的数据,进行分布式计算,使用比如mapreduce或者是spark都可以,那么此时尽可能让你的计算任务是靠近这个数据,而不是说在集群里通过网络胡乱传输数据,那样会导致性能极差极差
缺陷
1) 实时性差
要求低时间延迟的应用不适合在 HDFS 上运行,HDFS 是为高数据吞吐量应用而优化的,这可能会以高延迟为代价。
2) 小文件问题
由于 NameNode 将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总量受限于 NameNode 的内存总容量。根据经验,每个文件、目录和数据块的存储信息大约占 150 字节。过多的小文件存储会大量消耗 NameNode 的存储量。
3)文件修改问题
HDFS 中的文件只有一个写入者,而且写操作总是将数据添加在文件的末尾。HDFS 不支持具有多个写入者的操作,也不支持在文件的任意位置进行修改。
版权归原作者 码海拾贝2023 所有, 如有侵权,请联系我们删除。