一,HDFS出现的背景
虽然硬盘存储容量在不断提升,但是访问速度(I/O)跟不上,解决办法是数据存储在多个硬盘,同时对多个硬盘的数据并行读写。
这样需要解决两个问题:一是硬件故障问题,二是分析任务需要结合不同来源的数据。
于是,Hadoop提供了一个可靠的共享存储和分析系统:HDFS实现数据的存储,MapReduce实现数据的分析和处理。
作为Hadoop的核心技术之一,HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)是分布式计算中数据存储管理的基础。它所具有的高容错、高可靠、高可扩展性、高吞吐率等特性为海量数据提供了不怕故障的存储,也为超大规模数据集(Large Data Set)的应用处理带来了很多便利。
二,HDFS的设计前提与目标
硬件错误是常态而不是异常。
HDFS被设计为运行在众多的普通硬件上,所以硬件故障是很正常的。因此,错误检测并快速恢复是HDFS最核心的设计目标。
流式数据访问。
HDFS的设计建立在“一次写入、多次读取”的基础上。一个数据集由数据源生成或复制而来,然后响应各种各样的数据分析任务请求,每次分析都涉及该数据集的大部分数据甚至全部,因此读取整个数据集的时间延迟比读取第一条记录的时间延迟更重要。
大规模数据集。
HDFS的文件大小都在GB甚至TB级别。
简单一致性模型。
由于HDFS采用“一次写入,多次读取”的访问模式,所以文件一经创建、写入和关闭之后就不需更改了,简化了数据一致性问题,使高吞吐量的数据访问成为可能。
移动计算比移动数据更为划算。
对于大文件来说,移动计算比移动数据的代价要低,在数据旁边进行操作效率会比较高,尤其是数据量大时,这样可以减少网络拥塞和提高吞吐量,所以把计算迁移到数据附近更好,而不是把数据传输到程序运行的地方。
三 ,HDFS相关概念
1,数据块
在单一磁盘的文件系统中,每个磁盘都有默认的数据块大小,这是磁盘进行数据读/写的最小单位。HDFS同样也有块(block)的概念,但是大得多,默认是64MB。与单一磁盘上的文件