分布式文件系统HDFS概览
一、HDFS概述及特点
Hadoop是基于2003年Google的发表于的GFS论文,而开发形成的一个分布式文件系统(Hadoop Distributed File System),简称HDFS。该分布式文件系统是一款可以部署在廉价硬件上的易拓展、高容错。高吞吐量的大文件存储系统。
HDFS在使用中,适用于大文件存储和流式数据访问。而不适用于大量小文件存储、随机写入和低延迟读取。
二、HDFS系统架构
HDFS系统架构图
HDFS是一个Master(NameNode/NN)/Slave(DateNode/DN)(一个Master带多个Slaves),在HDFS中文件会被拆成多个block存储在DateNode上。其中NameNode(简写:NN):也称命名节点,用于存储、生成文件系统元数据的实例。某一时刻集群中只有一个namenode实例接受客户端读写请求,生成并处理元数据。DataNode(简写:DN):也称数据节点,用于存储实际的数据,并将自己管理的数据块上报给NameNode ,集群中运行多个DataNode实例。Client:即客户端,支持业务访问HDFS,从NameNode获取元数据信息,从DataNode获取数据返回给业务。集群中允许存在多个client实例和业务一起运行。
三、HDFS的写入流程
HDFS认为硬件总是不可靠的,所以每个数据块都用3副本存储机制,从而保证保存数据的完整性和系统的容错性。在文件写入的时候,同时生成相应的副本。
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后HDFS Client联系NameNode,确认数据写完成,NameNode持久化元数据。
四、HDFS的读取流程
相对于HDFS的写入流程,HDFS的读取流程要简单的多。
HDFS读取流程
业务应用调用HDFS Client提供的API打开文件。
HDFS Client联系NameNode,获取到文件信息(数据块、DataNode位置信息)。
业务应用调用read API读取文件。
HDFS Client根据从NameNode获取到的信息,联系DataNode,获取相应的数据块。(Client采用就近原则读取数据)。
HDFS Client会与多个DataNode通讯获取数据块。
数据读取完成后,业务调用close关闭连接。
- 点赞
- 收藏
- 关注作者
评论(0)