数据写入流程
1.客户端向NameNode发起请求
2.NameNode审核权限,剩余空间后,满足条件允许写入,并告知客户端写入的DataNode地址
3.客户端指向指定的DataNade发送数据包
4.被写入数据的DataNode同时完成数据副本的复制工作,将其接受的数据分发给其他DataNode
5.如上,DataNode1复制给DataNode2,然后基于DataNode2复制给DataNode3和DataNode4
6.写入完成客户端通知NameNode,NameNode做元数据记录工作
关键信息点:
NameNode不负责数据写入,只负责元数据记录和权限审批
客户端直接向一台DataNode写数据,这个DataNode一般是离客户端最近(网络距离)的那一个(网络速度快)
数据块副本的复制工作,由DataNode之间自行完成(构造一个PipLine,按顺序复制分发,如图1给2,2给3和4)
数据读取流程
1.客户端向NameNode申请读取某文件
2.NameNode判断服务端权限等细节后,允许读取,并返回此文件的block列表
3.客户端拿到block列表后自行寻找DataNode读取即可
关键点:
1.数据同样不通过NameNode提供,NameNode只负责审查
2.NameNode提供的block列表,会基于网络距离计算尽量提供客户端最近的
因为1个block有3份,会尽量找离客户端最近的那一份让其读取
1.对于客户端读取DHFS数据的流程中,一定要知道
不论读,还是写,NameNode都不经手数据,均是客户端和DataNode直接通讯不然对NameNode压力大
2.写入和读取的流程,简单来说就是:
NameNode做授权判断(是否能写,是否能读)
客户端直连DataNode进行写入(由DataNode自己完成副本复制),客户端直连DataNode进行block读取
写入,客户端会被分配找自己最近的DataNode写数据
读取,客户端拿到block列表,会是网络距离最近的一份
3.网络距离
最近的距离就是在同一台机器
其次就是同一个局域网(交换机)
再其次就是跨越交换机
再其次就是跨越数据中心
HDFS内置网络距离计算算法,可以通过IP地址,路由表来推断网络距离