分布式文件系统HDFS概览

举报
敲代码的王小明 发表于 2018/12/20 16:14:13 2018/12/20
【摘要】 一、HDFS概述及特点Hadoop是基于2003年Google的发表于的GFS论文,而开发形成的一个分布式文件系统(Hadoop Distributed File System),简称HDFS。该分布式文件系统是一款可以部署在廉价硬件上的易拓展、高容错。高吞吐量的大文件存储系统。HDFS在使用中,适用于大文件存储和流式数据访问。而不适用于大量小文件存储、随机写入和低延迟读取。二、HDFS系统...

一、HDFS概述及特点

Hadoop是基于2003年Google的发表于的GFS论文,而开发形成的一个分布式文件系统(Hadoop Distributed File System),简称HDFS。该分布式文件系统是一款可以部署在廉价硬件上的易拓展、高容错。高吞吐量的大文件存储系统。

HDFS在使用中,适用于大文件存储和流式数据访问。而不适用于大量小文件存储、随机写入和低延迟读取。

二、HDFS系统架构

webp


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副本存储机制,从而保证保存数据的完整性和系统的容错性。在文件写入的时候,同时生成相应的副本。

blob.png

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的读取流程要简单的多。

blob.png

HDFS读取流程

  • 业务应用调用HDFS Client提供的API打开文件。

  • HDFS Client联系NameNode,获取到文件信息(数据块、DataNode位置信息)。 

  • 业务应用调用read API读取文件。 

  • HDFS Client根据从NameNode获取到的信息,联系DataNode,获取相应的数据块。(Client采用就近原则读取数据)。

  • HDFS Client会与多个DataNode通讯获取数据块。

  • 数据读取完成后,业务调用close关闭连接。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。