Hadoop是一个由 Apache 基金会开发的分布式系统基础架构。可以快速实现大规模数据的分布式存储开发,以及分布式程序的快速开发,利用集群的威力进行大数据的高速存储和运算。其中 Hadoop 分布式文件系统(Hadoop Distributed File System,HDFS)起到非常重要的作用,HDFS 是 Hadoop 项目核心子项目,HDFS 是分布式计算中数据存储管理的基础,它以文件的形式为上层应用提供海量数据存储服务,并实现了高可靠性、高容性、高可扩展性、高可用性、高吞吐率等特点。
一、HDFS产生的背景
数据量的不断增大导致数据在一个操作系统管辖的范围内存储不下,为了存储这些大规模数据,需要将数据分配到更多操作系统管理的磁盘中存储,但是这样处理会导致数据的管理和维护很不方便,所以迫切需要一种系统来管理和维护多台机器上的数据文件,这种系统就是分布式文件管理系统,而HDFS只是分布式文件管理系统中的一种。
二、HDFS的设计理念
HDFS 的设计理念来源于非常朴素的思想∶即当数据文件的大小超过单台计算机的存储能力时,就有必要将数据文件切分并存储到由若干台计算机组成的集群中,这些计算机通过网络进行连接,而HDFS 作为一个抽象层架构在集群网络之上,对外提供统一的文件管理功能,对于用户来说感觉像在操作一台计算机一样,根本感受不到 HDFS 底层的多台计算机,而且 HDFS 还能够很好地容忍节点故障且不丢失任何数据。
下面来看一下HDFS的核心设计目标。
(1)支持超大文件存储
支持超大文件存储是HDFS最基本的功能。这里的“超大文件”指大小达到TB、PB级别的文件。随着未来技术水平的发展,数据文件的规模还可以更大。
(2)流式数据访问
流式数据访问是HDFS选择的最高效的数据访问方式。
流式数据访问可以简单理解为∶读取数据文件就像打开水龙头一样,可以不停地读取和分析,而且每次分析都会涉及该数据集的大部分甚至全部数据,所以每次读写的数据量都很大,因此对整个系统来说读取整个数据集所需要的时间要比读取第一条记录所需要的时间更重要,即HDFS 更重视数据的吞吐量,而不是数据的访问时间。所以 HDFS 选择采用一次写入、多次读取的流式数据访问模式,而不是随机访问模式。
(3)简单的一致性模型
在 HDFS 中,文件创建、写入、关闭,不再进行修改保证数据的一致性。
(4)硬件故障的检测和快速应对
利用大量普通硬件构成的集群平台中,硬件出现故障是常见的问题。一般的HDFS系统是由数十台甚至成百上千台存储着数据文件的服务器组成,大量的服务器就意味着高故障率,但是HDFS在设计之初已经充分考虑到这些问题,认为硬件故障是常态而不是异常,所以如何进行故障的检测和快速自动恢复也是HDFS的重要设计目标之一。
总之,HDFS能够很好地运行在廉价的硬件集群之上,以流式数据访问模式来存储管理超大数据文件。这也是HDFS成为大数据领域使用最多的分布式存储系统的主要原因。
三、HDFS的优缺点
(1)HDFS的优点:高容错性、适合大数据处理、流式文件访问、可构建在廉价的机器上。
(2)HDFS的缺点:不适合低延时数据访问、不适合大量小文件的存储、不适合并发写入、文件随机修改。
HDFS为海量数据提供了不怕故障的存储,给超大数据集的应用处理带来了很多便利。