博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDFS的读写流程
阅读量:2433 次
发布时间:2019-05-10

本文共 1211 字,大约阅读时间需要 4 分钟。

读取流程/下载

1.客户端发起RPC请求到NameNode

2.NameNode收到请求之后会校验这个文件是否存在

3.如果文件存在,NameNode就会读取元数据,同时给DataNode一个信号

4.客户端就会向NameNode要第一个Block的地址

5.NameNode在收到请求之后会读取元数据,然后将第一个Block的地址放入队列中返回给客户端

6.客户端收到队列之后从中选择一个较近的节点来读取第一个Block,会对这个Block进行checksum的验证;如果校验失败,客户端会给NameNode一个信号,然后重新选取地址重新读取;如果校验成功,则客户端会向NameNode要第二个Block的地址,重复456过程

7.客户端读取完成所有的Block之后,会给NameNode一个结束信号,NameNode在收到信号之后会关闭文件

写入流程/上传

1.客户端发起RPC请求到NameNode

2.NameNode在接收到请求之后会进行校验:

a.校验指定路径是否存在
b.校验写入路径是否有权限
c.校验指定路径中是否有同名文件

3.如果校验失败,则抛出异常;如果校验成功,记录元数据,NameNode会给客户端一个信号

4.客户端在收到信号之后会向NameNode要第一个Block的存储位置

5.NameNode在受到请求之后,会等待DataNode的心跳,选取DataNode的地址,放入队列中返回给客户端.默认情况下,NameNode会选择3个地址

6.客户端受到队列之后取出3个地址,从这些地址中选择一个较近的节点写入第一个Block的第一个副本

7.第一个副本所在节点会通过pipeline(管道,实际上就是NIO中的Channel),将第二个副本写到其他节点上,第二个副本所在的节点再写到第三个副本

8.写完之后,第三个副本所在的节点会给第二个副本所在的节点返回ack,第二个副本所在的节点收到之后会给第一个副本所在的节点返回ack,第一个副本所在的节点再给客户端返回ack

9.写完第一个Block之后,客户端会和NameNode要第二个Block的存储位置,然后重复5678过程

10.当写完所有的Block之后,客户端会给NameNode一个结束信号,NameNode就会关闭文件/关流,文件关闭之后,这个文件就不可修改

删除流程

1.客户端发起RPC请求到NameNode

2.NameNode在受到请求之后,会将这个请求记录到edits文件中,然后更新内存中的元数据,内存更新成功之后,会给客户端返回一个ack信号,此时这个文件对应的Block依然存储在DataNode上

3.在NameNode受到DataNode的心跳的时候,NameNode就会检查Block信息,会给DataNode进行心跳响应,要求删除对应的Block.DataNode受到心跳响应之后才会真正删除Block

转载地址:http://erxmb.baihongyu.com/

你可能感兴趣的文章
Mybatis异常:The content of elements must consist of well-formed.......(一般出现在写分页/带大于小于号的SQL)
查看>>
Mybatis光速入门(配置文件模块)
查看>>
关于Oracle的主键自增如何设置
查看>>
手撕HashMap的resize()方法源码渗透解析+图解
查看>>
Mybatis常见异常类型Could not set parameters for mapping离不开这个原因!
查看>>
Thymeleaf中一个页面怎么嵌套另一个页面,关于页面嵌套,标签告诉你应该知道的
查看>>
JAVA如何实现短信验证码--阿里云接口,新手式图文教学,个人项目有这一篇就够了
查看>>
Java中大小数BigDecimal的加减乘除用法及场景的详细介绍,看完不信你还会报Syntax error on token “+/-/*“, invalid AssignmentOperat异常
查看>>
UVa 10917 Dijkstra
查看>>
CF403B/CF402D
查看>>
CF402E / 403C
查看>>
cf404b
查看>>
cf404c
查看>>
cf404d
查看>>
武大网络预赛 Problem 1545 - I - Twenty-four
查看>>
ZOJ Problem Set - 3768 Continuous Login
查看>>
某山面试 3、实现如下函数:
查看>>
malloc的小知识
查看>>
UVALive 6755 - Swyper Keyboard
查看>>
uva_11029 Leading and Trailing 快速幂 数的n次方前几位
查看>>