写入的流程
流程:
-
客户端先向 NameNode 节点发送上传数据的请求
-
NameNode 接收到请求之后进行权限校验,校验之后,会计算出来三个节点
-
客户端会将输入的文件切割成 块 ,然后一个个块进行传递
-
客户端先跟第一个服务器 创建连接,这个通道的名字是 PipeLine
-
每次传递数据的时候都是以 Packet 为单位进行传递的,每个 Packet 大约是 64KB
-
各个数据节点(DataNode)之前也会创建连接 PipeLine ,中间也是传递的 Packet
-
各个节点传递成功之后会进行应答响应。最后汇总起来一起告知客户端传递好了
-
不是第一个节点的数据传递好了才传给第二个节点的,而是三个节点几乎是同时进行的
读取流程
流程:
-
客户端向服务器端索要数据
-
NameNode 先校验权限,接着从自己的内存中查看这个文件分别存储在哪些节点上,然后将这个信息告知给 Client
-
Client 客户端拿到元数据之后,去各个节点上去拉取数据(不是副本)
-
将拉去的各个块的信息汇总起来,形成一个新的文件,就是我们想要的文件。