Client与DataNode流程分析
1.写文件流程
1) Client执行create方法,调用NameNode的create方法,同时在Client端启动datastream线程;
2) Client调用write方法,write不断地写入字节,写入字节的时候,以chunk大小作为生成校验和的单位;当写的字节数量达到一个包大小,就将这些字节封装成一个包,并加入dataqueue队列;
3) datastream线程读取dataqueue队列,如果读取到包数据,则首先判断是否需要创建块文件,如果需要,则需要有如下步骤:
a) 创建与DataNode的socket连接,DataNode接受到创建连接的请求,就初始化一个dataxceiver线程对象;
b) Client发送块头信息到DataNode;
c) DataNode接受到该头信息后,读取操作码,根据操作码调用方法writeBlock,在该方法中,会通过调用BlockReceiver构造函数,创建块文件,元数据文件,并打开这两个文件,完成后向Client发送初始化是否成功的状态码,如果有多个DataNode,要等;
d) Client接受到连接成功的状态码;
e) Cl

本文详细分析了Hadoop HDFS中Client进行文件写入和读取的流程。在写文件过程中,Client通过NameNode创建文件并启动datastream线程,数据按chunk大小生成校验和,分包写入DataNode,最终关闭文件并完成写操作。读文件时,Client查询NameNode获取文件块位置,选择DataNode建立连接,读取指定位置的数据块并进行校验,最后读取所有块后返回-1表示读取结束。
最低0.47元/天 解锁文章
866

被折叠的 条评论
为什么被折叠?



