1、数据写入流程:
(1)基础流程
~客户端发送请求
~NameNode做判断,是否具有权限,空间是否充足
~返回地址,告诉客户端一个datanode,
~向指定的datanode发送数据包,
副本的复制和备份如何处理?
被写入的DataNode同时完成数据副本的复制工作,将其接收的数据分发给其它DataNode,DataNode之间完成本分
~客户端告诉NameNode工作结束,NameNode开始记录元数据,即工作文档。
(2)注意点:
NameNode不接受数据,它只负责审批和记录元数据
DataNode很多,但是客户端只和一台(由NameNode)指定的DataNode建立联系,一般会将网络距离较近的DataNode分配给客户端,
~网络距离:
同一台服务器……同一个局域网内……同一个机架里……同一个数据中心,总归来说,它会同股票特殊的计算,计算出网络距离较近的DataNode。
数据块之间的复制工作,由DataNode之间自行完成,它们之间会形成PipeLine(派泡莱)管道,按照顺序纷发。
2、数据读取流程
(1)基础流程
~客户端向NameNode发送请求,
~NameNode审核客户端权限,允许读取并告诉客户端block列表
~客户端根据NameNode提供文件的block列表自行从DataNode中读取所需要的block块
同样的,在NameNode返回给客户端的block列表中,同样会指出网络距离最近的那一份,因为一个block块存在3个备份,存在于三个不同的DataNode中,通过特殊算法计算网络距离,返回网络距离最近的DataNode。