hdfs有以下缺点:1、不能做到低延迟数据访问;2、不适合大量的小文件存储;3、不能并发写入、文件随机修改。不能做到低延迟数据访问是指HDFS 针对一次性读取大量数据做了优化,但它在低延时的情况下是不行的,比如毫秒级以内读取数据,这样它是很难做到的。
1、不能做到低延迟数据访问
HDFS 针对一次性读取大量数据继续了优化,牺牲了延迟性。例如,订单是否适合存储在HDFS中,要求数据毫秒级就要查出来。它适合高吞吐率的场景,就是在某一时间内写入大量的数据。但是它在低延时的情况下是不行的,比如毫秒级以内读取数据,这样它是很难做到的。如果要处理一些用户要求时间比较短的低延迟应用请求,则HDFS不适合。HDFS是为了处理大型数据集分析任务的,主要是为达到高的数据吞吐量而设计的,这就可能要求以高延迟作为代价。
2、不适合大量的小文件存储
不适合大量的小文件存储,如果真有这种需求的话,要对小文件进行压缩。由于namenode将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限于namenode的内存容量。根据经验,每个文件、目录和数据块的存储信息大约占150字节。因此,如果有一百万个小文件,每个小文件都会占一个数据块,那至少需要300MB内存。如果是上亿级别的,就会超出当前硬件的能力。
3、不能并发写入、文件随机修改
不适合修改,实际中网盘、云盘内容是不允许修改的,只能删了重新上传,它们都是Hadoop实现的。HDFS适合一次写入,多次读取的场景。对于上传到HDFS上的文件,不支持修改文件。Hadoop2.0虽然支持了文件的追加功能,但不建议对HDFS上的文件进行修改。因为效率低下。不支持用户的并行写:同一时间内,只能有一个用户执行写操作
延伸阅读:
什么是hdfs?
Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。
HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streaming access)文件系统中的数据。
HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据。
文章标题:hdfs有哪些缺点,发布者:小编,转载请注明出处:https://worktile.com/kb/p/35277