当前位置:   article > 正文

HDFS的读写机制_服务器put文件到hdfs会切分吗

服务器put文件到hdfs会切分吗

一、HDFS数据写流程

  • 流程图如下
    在这里插入图片描述
  • 具体案例如下

在这里插入图片描述

  • 写入过程如下
  1. Client发起文件上传请求,通过RPC向NameNode发起请求,NameNode检查目标文件是否已经存在,父目录是否存在,创建者是否有权进行操作
  2. NameNode返回是否可以上传(若成功则返回可以上传,否则会让客户端抛出异常)
  3. 当客户端开始写入文件的时候,开发库会将文件切分为多个packets,并在内部以“dataqueue”的形式管理这些packets,并向Namenode申请新的blocks,clients请求第一个block该传输到哪些DataNode服务器上。
  4. NameNode返回三个DataNode服务器DataNode1,DataNode2,DataNode3
  5. Client请求3台中的一台DataNode1(遵循就近原则,如果都一样,就随机挑选一台DataNode;上传数据本质上是一个RPC调用建立pipline)上传数据,DataNode1收到请求会继续调用DataNode2,然后DataNode2调用DataNode3,将整个pipeline建立完成,逐级返回客户端
  6. Client开始往DataNode1上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet(默认为64KB)为单位,DataNode1收到一个packet就会传递给DataNode2,DataNode2传递给DataNode3;DataNode1每传一个pocket会放入一个答应队列等待答应
  7. 到一个block传输完成之后,Client再次请求DataNode上传第二个block服务器
  8. 重复执行上述操作

二、HDFS数据读流程

  • 流程图如下
    在这里插入图片描述

  • 具体案例如下
    在这里插入图片描述

  • 读过程如下

  1. client跟NameNode通信查询元数据,找到文件块所在的DataNode服务器
  2. 挑选一台DataNode(遵循就近原则,如果都一样,则随机挑选一台DataNode)服务器,请求建立socket流
  3. DataNode开始发送数据(从磁盘里面读取数据放入流,以packet为单位来做效验)
  4. 客户端以packet为单位接收,先存在本地缓存,然后写入目标文件。

三、HDFS读写实物图(漫画流程)

HDFS的读写流程就介绍完了,看着有点抽象,可以借助下边的图片来理解一下

1. 写数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 读数据

在这里插入图片描述
在这里插入图片描述
老师上课讲的知识点,感觉挺重要的,然后就整理了一下。,若有不对或这描述不清楚的地方请指正,如果有帮助或者喜欢就给个赞和关注一下吧

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/592800
推荐阅读
相关标签