码迷,mamicode.com
首页 > 其他好文 > 详细

HDFS读写流程

时间:2020-06-25 11:57:36      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:check   filesyste   传输   方法   creat   info   img   关闭   span   

写流程

技术图片

 

1.HDFS Client调用DistributedFileSystem.create(filePath)方法,去和NN进行【RPC】通信!
2.NN 会去check这个路径的文件是否已经存在,是否有权限能够创建这个文件!
假如都ok,就去创建一个新的文件,但是这时还没写数据,是不关联任何的block。
返回输出流 FSDataOutputStream,,封装了输出流 DFSOutputDtream。
3.客户端写入数据:输出流 DFSOutputDtream 将数据分成一个个的数据包,并写入内部队列。
DataStreamer 根据 DataNode 列表来要求 NameNode 分配适合的新块来存储数据备份。
一组 DataNode 构成管线(管线的 DataNode 之间使用 Socket 流式通信); 4.使用管线传输数据:DataStreamer 将数据包流式传输到管线第一个DataNode,
第一个 DataNode 再传到第二个DataNode,直到完成;DataNode 收到数据后发送确认,
管线的 DataNode 所有的确认组成一个确认队列。所有 DataNode 都确认,管线数据包删除; 5.
client写完数据后,调用 close( ) 方法,将剩余所有数据写入Pipline,等待确认ack
后联系 NameNode并且发送文件写入完成信息
6.故障处理:若过程中发生故障,则先关闭管线,把队列中所有数据包添加回去队列,确保数
据包不漏。为另一个正常 DataNode 的当前数据块指定一个新的标识,
并将该标识传送给 NameNode,一遍故障 DataNode 在恢复后删除上面的不完整数据块。
从管线中删除故障 DataNode 并把余下的数据块写入余下正常的 DataNode。NameNode
发现复本两不足时,会在另一个节点创建一个新的复本;

 

HDFS读写流程

标签:check   filesyste   传输   方法   creat   info   img   关闭   span   

原文地址:https://www.cnblogs.com/huangguoming/p/13191365.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!