HDFS,即Hadoop Distributed File System(Hadoop分布式文件系统),是Hadoop项目的核心组件之一,专门设计用于存储大规模数据集。
HDFS最初是作为Apache Nutch Web搜索引擎项目的基础结构而构建的。HDFS是Apache Hadoop Core项目的一部分。官方资料:Apache Hadoop 3.4.1 – HDFS Federation
以下是HDFS的一些关键特性和概念:
1. 设计目标
HDFS被设计为一个高度可靠的系统,能够跨多个廉价的硬件设备存储和处理大量数据。它的目标是提供高吞吐量的数据访问,适合于大规模数据集的应用。
2. 架构
HDFS采用主从(Master-Slave)架构,主要由以下两种节点组成:
- NameNode:负责管理文件系统的命名空间和控制对文件的访问。它维护文件系统的目录树和所有文件和目录的元数据,但不存储实际的数据。
- DataNode:负责存储实际的数据。每个DataNode定期向NameNode发送心跳信号和块报告,以表明其状态和存储的块。
3. 数据存储
在HDFS中,文件被分割成一系列的块(block),默认情况下每个块的大小为128MB(可配置)。这些块分散存储在集群的多个DataNode上,以提供容错能力。如果某个DataNode失败,HDFS可以从其他节点复制数据块来恢复数据。
4. 数据复制
为了提高数据的可靠性,HDFS允许用户配置数据的副本数量(默认为3)。这意味着每个数据块可以有多个副本分布在不同的DataNode上。
5. 数据一致性
HDFS通过校验和(checksum)来确保数据的一致性。每个数据块都有一个关联的校验和文件,用于检测数据在传输或存储过程中是否发生错误。
6. 适用场景
HDFS非常适合于那些需要大规模数据存储和处理的应用,如数据仓库、机器学习、日志分析等。它适合于读多写少的场景,因为文件一旦创建,就不能修改,只能追加数据。
7. 不适用场景
HDFS不适合需要频繁随机写入或小文件存储的场景,因为这些操作在HDFS中效率较低。
8. 高级特性
HDFS还提供了一些高级特性,如快照、配额管理、数据压缩和加密等。
总的来说,HDFS是一个为大规模数据处理而设计的分布式文件系统,它通过在廉价硬件上存储多个数据副本来提供高可靠性和高吞吐量的数据访问。