Hadoop 基础(二)

hadoop.jpg

HDFS 读写流程

我们知道在HDFS中我们的文件按数据块进行存储,那么当我们写入或者读取一个文件的时候HDFS到底进行了哪些操作呢?

HDFS 写流程

write.png

如上图所示,假如我们有一个四个节点的集群,并且我们将数据备份个数设置成3个。当我们写入一个文件到HDFS集群的时候:

  1. 首先,HDFS Client和NameNode建立连接,告诉NameNode要存储一个文件。NameNode维护着DataNode的列表,知道哪些DataNode上面还有空间可以进行存储。
  2. NameNode通过查看存储的元数据信息,发现DataNode1,2,3上可以进行存储。于是他将此信息返回给HDFS Client。
  3. HDFS Client接受到NameNode的返回的DataNode列表后,Client会与距离最近DataNode1建立连接,让其准备好接收数据。然后将文件进行分块,将数据块1和NameNode返回的DataNode列表信息一起发送给DataNode1.
  4. DataNode1通过列表信息得知要发送给DataNode2.所以DataNode1将数据与列表信息发送给DataNode2.DataNode2又发送给DataNode3,此时数据块1已经存储完成并备份了三份。
  5. 当DataNode1,2,3都接收并存储数据块1后,会向NameNode发送信息,告知已经接收到了数据块1.并把数据块1相关信息发送给NameNode,NameNode更新元数据信息并 与Client通信告知数据块1已经存储完毕。然后Client开始进行数据块2的存储。

HDFS 读流程

read.png

如上图所示,假如我们有一个四个节点的集群,当我们想读取一个存在HDFS中的文件的时候,步骤如下:

  1. HDFS Client与NameNode建立链接,告诉NameNode要读取文件xxx。
  2. NameNode通过查询自己的元数据信息,得到文件xxx的数据块映射信息及存储数据块的DataNode列表。然后将这些信息发送给Client。
  3. Client得到这些信息之后,寻找最近可用的DataNode1.取回数据块1.从DataNode2取回数据块2. 自此成功读取文件xxx
  4. 如果DataNode2出现问题挂掉了,则从DataNode3进行数据块读取。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • hadoop HDFS原理解析01 HDFS架构•NameNode•DataNode•Sencondary Nam...
    白菜青萝卜阅读 7,737评论 2 30
  • HDFS的设计目标 通过上一篇文章的介绍我们已经了解到HDFS到底是怎样的东西,以及它是怎样通过多副本机制来提供高...
    陌上疏影凉阅读 5,313评论 0 3
  • 一、Hadoop Hadoop是Apache开源的大数据存储及分析的工具。 数据存储以自带的旗舰级分布式文件系统H...
    Mervey阅读 4,114评论 0 0
  • 又是八个月一更,觉得该BB点儿什么了,没想到还蹭上了热点。 这两天都没睡好,失眠,还会默默地长泪横流。铺天盖地都是...
    Kinata的小名叫阿梦阅读 2,607评论 0 0
  • 对于内向矫情的不自在星人来讲,如果在一个人面前可以不用在乎自己的形象,想哭就哭想笑就笑,可以肆无忌惮的分享各种稀奇...
    你说我听好么阅读 1,841评论 1 1

友情链接更多精彩内容