首页 > 其他 > 详细

Hadoop基础-HDFS的读取与写入过程剖析

时间:2018-09-09 18:51:40      阅读:252      评论:0      收藏:0      [点我收藏+]

                Hadoop基础-HDFS的读取与写入过程剖析

                                     作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

  本篇博客会简要介绍hadoop的写入过程,并不会设计到源码,我会用图和文字来描述hdfs的写入过程。

 

 

一.hdfs写数据流程

 技术分享图片

   如上图所示,想要把一个4.2G的文件写入到hdfs集群中,它是怎么实现的呢?其步骤简要如下:

1>.客户端向NameNode请求在"/user/yinzhengjie/movies/"目录下上传一个名称叫“苍老师.rmvb”的视频;

2>.NameNode检查客户端是否有权限上传,如果有返回客户端可以上传,否则返回权限被拒绝。

3>.客户端请求第一个block上传到哪几个DataNode服务器上;

4>.NameNode返回3个DataNode节点,分别为DataNode1,DataNode2,DataNode3(如上图所示);

5>.客户端请求DataNode1上传数据,DataNode1收到请求会继续调用DataNode2,然后DataNode2再调用DataNode3,将这个同学管道简历完成;

6>.DataNode1,DataNode2,DataNode3逐级应答客户端

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

8>.当一个block传输完成后,客户端再次请求NameNode上传第二个block的服务器。(重复执行3~7步)

 

二.hdfs读数据流程

技术分享图片

  如上图所示,想要把一个4.2G的文件从hdfs集群中读取,它是怎么实现的呢?其步骤简要如下:

1>.客户端向NameNode请求下载"/user/yinzhengjie/movies/苍老师.rmvb"的文件;

2>.NameNode通过查询元数据,如果找到文件块所在的DataNode地址列表就返回给客户端,如果没有找到元数据信息就返回客户端访问的资源不存在;

3>.客户端拿到NameNode的数据之后,挑选一台DataNode服务器(就近原则,然后随机)请求读取数据;

4>.DataNode开始传输数据给客户端(从磁盘里面读取数据放入流,以package为单位来做实验);

5>.客户端以package为单位接收,现在本地缓存,然后写入目标文件;

 

Hadoop基础-HDFS的读取与写入过程剖析

原文:https://www.cnblogs.com/yinzhengjie/p/9614267.html

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