【大数据】HDFS读写流程

今天在网上查资料,突然发现一个很好玩的东西,一致性哈希算法,有个大佬解释的非常详细,出于羡慕就小小转载一波,也得到他同意了,如果感兴趣小伙伴们可以去瞅瞅,吼吼。。。好,言归正传,就是前两天给周围朋友讲了一下HDFS文件的读写流程,他们反映特别好,都说不错,恍然大明白的感觉,今天借着这个兴奋劲就写一篇,希望能帮大家理解一下HDFS的读写流程。。

说读写流程之前我们先简单了解一下读写数据所要用到的节点吧

主节点NameNode

  1. 接收并处理客户端发出的请求
  2. 维护文件系统的目录结构
  3. 管理block与文件、block与DataNode之间的关系

从节点DataNode

  1. 存储数据
  2. 将数据以block的形式存储到磁盘上
  3. 副本机制

写数据流程图

在这里插入图片描述

好!准备工作完毕,我们一步一步开始分析

  1. 首先客户端向NameNode请求向HDFS中写入数据。
  2. 然后NameNode会对发送请求的客户端进行权限检测,检测客户端是否有向HDFS中写数据的权限。这里在画图的时候忘记了还有一步,检测完权限后还会检测HDFS中是否存在要写的文件,如果权限不足或者文件已存在,都会抛出异常。
  3. 如果以上检测都通过,那么就给客户端返回可以写数据的DataNode信息。
  4. 客户端和DataNode建立连接。
  5. DataNode之间建立管道。这里需要解释一下,因为我们集群存储数据是以多副本形式存储的,所以为了提高文件存储的安全性,会将数据复制多份通过管道传到其他DataNode中。各种管道建好了,就开始以block的形式往DataNode中传数据。
  6. 等到数据都传完,客户端向NameNode发送完成写数据的消息。

以上就是向HDFS写数据的流程,有一说一,不是很详细,但是很好懂。

读数据流程图

在这里插入图片描述
我们继续分析

  1. 客户端向NameNode请求读HDFS中的数据。
  2. 同样的NameNode也会对发送请求的客户端进行权限检测,检测客户端是否有从HDFS中读数据的权限。然后还会检测HDFS中是否存在要读取的文件,如果权限不足或者文件不存在,都会抛出异常。
  3. 如果以上检测都通过,那么就给客户端返回数据的元数据信息。
  4. 客户端和DataNode建立连接,读取数据。这里读取数据有一个很重要的点,就是因为我们存储数据是以block形式存的,有的文件被切成多个block后可能被存到不同的DataNode中,其实NameNode在向客户端返回元数据信息的时候,就会将这个文件每个block的顺序和存放位置都告诉客户端,这时客户端读取文件时会按block的顺序进行读,如果读完第一个block而下一个block在其他DataNode中,则会与当前DataNode断开连接,和另外的DataNode建立连接,直到数据传输完毕。
  5. 等到数据都传完,客户端向NameNode发送完成读数据的消息。

好啦,以上就是HDFS的读写流程,希望对热爱学习的你有所帮助。。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值