HDFS即Hadoop Distributed File System的简称,是一个被设计为运行在廉价机器上的分布式文件系统,是Google分布式文件系统GFS的开源实现。

数据块(Data Blocks)是HDFS存储文件的最基本单元,HDFS通过分块存储的方式提高文件的读写性能以突破单机存储瓶颈,通过数据块的多副本冗余存储保证数据的可靠性。

HDFS的设计目标(Assumptions and Goals)

  • 硬件故障(Hardware Failure):HDFS认为硬件故障时常态而不是异常,一个HDFS集群由成百上千的服务器组成,每个服务器存储文件系统的一部分数据,这些服务器可能是廉价的硬件且不稳定,可能随时损坏。因此故障检测、快速、自动恢复时HDFS的核心架构目标
  • 流式数据访问(Streaming Data Access):运行在HDFS上的应用需要以流的方式访问它们的数据集。HDFS的设计中更多考虑的是数据的批处理场景,而不是用户交互式处理。HDFS更关注数据访问的高吞吐量。
  • 大数据集(Large Data Sets):运行在HDFS上的应用具有很大的数据集。如HDFS上的一个典型文件的大小在GB级到TB级之间。因此,HDFS被实现为支持大文件存储。HDFS应该能在一个集群内扩展到数百个节点提供整体很高的数据传输带宽,应该能支持千万级文件。
  • 简单一致性模型(Simple Coherency Model):HDFS应用需要一个“一次写入多次读取”的文件访问模型,一个文件经过创建、写入和关闭后不需要再改变。这个模型简化了数据一致性的问题,并使的高吞吐量的数据访问成为可能。MapReduce应用和Web爬虫应用特别适合这个模型。
  • 移动计算比移动数据更划算(“Moving Computation is Cheaper than Moving Data”):将计算移动到数据附件比将数据移动到应用所在的位置更好,HDFS提供了将应用移动到数据附近的接口。

参考