HDFS原理|青训营笔记
HDFS:
Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。
上述即为百度百科给出的HDFS的定义,可以看出其是一个分布式文件系统,接下来将会详细解释HDFS的原理和结构
HDFS架构
此处需要介绍具体的组件信息:
-
块(Block):将一个文件进行分块,通常是64M。写入后不能修改,但是可以追加。
-
名称节点(NameNode):保存整个文件系统的目录信息、文件信息及分块信息,如果主 NameNode 失效,切换到Secondary NameNode。
-
数据节点(DataNode):分布在廉价的计算机上,用于存储Block块文件。
-
客户端(Client):通过与 NameNode和DataNode 交互访问HDFS中的文件。
而在上述四个组件中,DataNode和NameNode是其两大核心。
HDFS数据的写入原理与流程
- 业务应用调用HDFS Client提供的API,请求写入文件。
- HDFS Client联系NameNode,NameNode在元数据中创建文件节点。
- 业务应用调用write API写入文件。
- HDFS Client收到业务数据后,从NameNode获取到数据块编号、位置信息后,联系DataNode,并将需要写入数据的DataNode建立起流水线。完成后,客户端再通过自有协议写入数据到DataNode1,再由DataNode1复制到DataNode2, DataNode3。
- 写完的数据,将返回确认信息给HDFS Client。
- 所有数据确认完成后,业务调用HDFS Client关闭文件。
- 业务调用close, flush后HDFSClient联系NameNode,确认数据写完成,NameNode持久化元数据。
HDFS数据的读取原理与流程
- 业务应用调用HDFS Client提供的API打开文件。
- HDFS Client联系NameNode,获取到文件信息(数据块、DataNode位置信息)。
- 业务应用调用read API读取文件。
- HDFS Client根据从NameNode获取到的信息,联系DataNode,获取相应的数据块。 (Client采用就近原则读取数据)。
- HDFS Client会与多个DataNode通讯获取数据块。
- 数据读取完成后,业务调用close关闭连接。
此次为针对HDFS原理的个人理解和分享,如果错误还请指出,谢谢