大数据学习之hadoop——06HDFS文件系统读写数据流程

HDFS中的数据写入读出原理

1、HDFS写数据流程

hadoop fs -put /home/bduser/xxx.txt /animals/tiger/

当我们执行上面这条语句时,集群将执行以下几个步骤(以一台NameNode,三台DataNode的完全分布式集群为例)

  • 1.1、客户端向NameNode发送请求:上传文件
    • 检查该文件是否存在于文件系统,如果存在,则提示该文件已经存在与目标目录下
    • 检查该文件上传的目标目录是否存在,如果不存在,则提示没有那个文件或目录
  • 1.2、NameNode返回消息
    • 如果存在1.1中的两种失败情况,将会返回客户端数据上传失败的原因,客户端将其输出至控制台
    • 如果不存在1.1中的两种失败情况,将会返回客户端可以上传文件的消息
  • 1.3、客户端接收到1.2返回的可以上传消息后,再次向NameNode发送请求:应当把数据块发送至哪几个DataNode节点上?
  • 1.4、NameNode得到1.3的请求会返回几个节点()以及存储位置,例如node01、node02、node03的什么什么路径
  • 1.5、客户端得到1.4NameNode返回的信息后将向临近节点发送建立联系的请求,由节点之间一个请求一个的建立起数据通道
  • 1.6、如果所有节点的数据通道都建立成功,将返回可以上传数据的消息
  • 1.7、客户端得到可以上传数据的消息之后,将第一个block块放入本地内存缓存中,以packet为单位传送至临近的节点上,该节点传给其临近的节点以此类推完成传数据递。(遵循http数据传输协议)
  • 1.8、当第一个数据块传输完毕后,将会传输剩余的数据块,重复执行上述步骤。。。
  • 1.9、当该文件的所有数据块都上传完毕之后,将会在NameNode上创建该文件的元数据
    在这里插入图片描述

2、HDFS读数据流程

  • 2.1、客户端向NameNode发送请求:下载文件xxx
  • 2.2:、NameNode查询元数据,找到文件块的地址,返回目标的元数据
  • 2.3、客户端按照就近原则向其中的一台机器发起读数据块1请求
  • 2.4、DataNode将数据传输会客户端
  • 2.5、客户端按照2.3、2.4、的步骤重复执行读数据块2…
  • 2.5、客户端将以packet为单位接收数据块,放入本地缓存,然后存入目标目录
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/nothair/article/details/104930295