📜  Hadoop分布式文件系统(HDFS)简介(1)

📅  最后修改于: 2023-12-03 15:31:05.880000             🧑  作者: Mango

Hadoop分布式文件系统(HDFS)简介

HDFS是Hadoop分布式计算框架的一部分,它是一个分布式文件系统,用于存储大规模数据集并提供高吞吐量的数据访问。

HDFS的设计目标

HDFS的设计目标是提供可靠的、高吞吐量的数据访问,适合用于大型数据集的应用程序。具体设计目标如下:

  • 存储海量数据:HDFS可以存储数以千计的节点上的PB级数据。
  • 处理海量数据:HDFS可以处理海量的数据集,亿级别的文件数、千万亿级别的文件大小。
  • 高吞吐量数据访问:HDFS可以以超高的吞吐量访问数据,支持多节点的数据并行读取和写入。
  • 可靠性:为了保证数据安全,HDFS采用了多个备份来保存数据,在节点故障或数据损坏时能够快速恢复数据。
HDFS的架构

HDFS采用了Master/Slave的架构,具体包括以下组件:

  • NameNode(主节点):用于存储文件系统的元数据信息。其中包括文件的目录结构、文件的属性、文件与Block的映射关系等。它是整个文件系统的核心节点。
  • DataNode(从节点):实际上存储着HDFS中的数据,存储着本地Block和Meta数据信息。
  • Secondary NameNode(辅助节点):用于帮助NameNode管理和备份NameNode上的元数据信息。

以下是HDFS的架构示意图:

HDFS架构示意图

HDFS的数据存储方式

HDFS将文件拆分成多个Block存储在不同的DataNode上,每个Block的大小默认为128MB,也可以通过配置文件进行修改。以下是HDFS的文件读取流程:

HDFS读取流程

  • 应用程序通过HDFS Client API向NameNode发送文件的读请求。
  • NameNode返回文件的Block信息给客户端。
  • 客户端通过与DataNode直接通信,获取相应的Block。
  • 客户端根据Block信息将所有Block拼接成完整的文件,完成读取操作。

以下是HDFS的文件写入流程:

HDFS写入流程

  • 应用程序通过HDFS Client API向NameNode发送文件的写请求。
  • NameNode返回文件的Block信息给客户端。
  • 客户端通过与DataNode直接通信,将数据分成多个Block进行存储。
  • DataNode完成Block的接收并确认存储完好后,返回成功信息给客户端。
  • 客户端将Block信息发送给NameNode,NameNode更新文件的元数据信息,完成写入操作。
总结

HDFS是Hadoop分布式计算框架的核心组件之一,能够存储PB级别的数据集,并以超高的吞吐量进行数据读写操作。在大数据领域得到了广泛的应用,也成为了分布式存储领域中的代表作之一。