首页 > 其他 > 详细

HDFS的读写

时间:2020-07-25 22:10:30      阅读:81      评论:0      收藏:0      [点我收藏+]

1.写数据

技术分享图片

 

1)客户端创建Distributed FileSystem模块

2)向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。

3)NameNode返回是否可以上传。

4)客户端请求第一个 Block上传到哪个DataNode服务器节点上

5)NameNode返回DataNode节点

6)客户端通过FSDataOutputStream模块

7)请求DataNode1上传数据,DataNode1收到请求会继续调用DataNode2,然后DataNode2调用DataNode3,将这个通信管道建立完成。

8)  DataNode1、DataNode2、DataNode3逐级应答客户端

9)  客户端开始往DataNode1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,DataNode1收到一个Packet就会传给DataNode2,DataNode2传给DataNode3;DataNode1每传一个packet会放入一个应答队列等待应答

10)写完数据,关闭输输出流

11)发送完成信号给NameNode

2.读数据

技术分享图片

 

 

1)客户端创建Distributed FileSystem

2)向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址。

3)挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。

4)通过FSDataInputStream读取

5)DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验)。

6)客户端以Packet为单位接收,先在本地缓存,然后写入目标文件。

7)读取结束,关闭

HDFS的读写

原文:https://www.cnblogs.com/realman9527/p/13377424.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!