HDFS的特点
随着互联网数据规模的不断增大,对文件存储系统提出了更高的要求,需要更大的容量、更好的性能以及安全性更高的文件存储系统,与传统分布式文件系统一样,HDFS分布式文件系统也是通过计算机网络与节点相连,但也有传统分布式文件系统的优点和缺点。
- 优点
(1)高容错
HDFS是可以由成百上千台服务器机器组成,每个服务器机器存储文件系统数据的一部分。HDFS中的副本机制会自动把数据保存多个副本,DataNode节点周期性地向NameNode发送心跳信号,当网络发生异常,可能导致DataNode与NameNode失去通讯,NameNode和DataNode通过心跳检测机制,发现DataNode宕机,DataNode中副本丢失,HDFS则会从其他DataNode上面的副本自动恢复,所以HDFS具有高的容错性。
(2)流式数据访问
HDFS的数据处理规模比较大,应用程序一次需要访问大量的数据,同时这些应用程序一般都是批量的处理数据,而不是用户交互式处理,所以应用程序能以流的形式访问数据集,请求访问整个数据集要比访问一条记录更加高效。
(3)支持超大文件
HDFS分布式文件系统具有很大的数据集,旨在可靠的大型集群上存储超大型文件(GB、TB、PB级别的数据),它将每个文件切分成多个小的数据块进行存储,除了最后一个数据块之外的所有数据块大小都相同,块的大小可以在指定的配置文件中进行修改,在Hadoop2.x版本中默认大小是128M。
(4)高数据吞吐量
HDFS采用的是“一次写入,多次读取”这种简单的数据一致性模型,在HDFS中,一个文件一旦经过创建、写入、关闭后,一旦写入就不能进行修改了,只能进行追加,这样保证了数据的一致性,也有利于提高吞吐量。
(5)可构建在廉价的机器上
Hadoop的设计对硬件要求低,无需构建在昂贵的高可用性机器上,因为在HDFS设计中充分考虑到了数据的可靠性、安全性和高可用性。
- 缺点
(1)高延迟
HDFS不适用于低延迟数据访问的场景,例如:毫秒级实时查询。
(2)不适合小文件存取场景
对于Hadoop系统,小文件通常定义为远小于HDFS的数据块大小(128MB)的文件,由于每个文件都会产生各自的元数据,Hadoop通过NameNode来存储这些信息,若小文件过多,容易导致NameNode存储出现瓶颈。
(3)不适合并发写入
HDFS目前不支持并发多用户的写操作,写操作只能在文件末尾追加数据。