HDFS两大核心 文件的读和写

HDFS的文件上传 写

①使用HDFS提供的客户端Client向远程的NameNode发起rpc请求。
②NameNode接收到客户端的请求后会检查要创建的文件是否存在,创建者是否有权进行操作,成功则有权操作,否则将会向客户端报错。
③客户端真正的提交上传文件的请求,请求中包含一个重要的信息(就是文件的大小,计算文件需要切块的个数)。
④NameNode开始计算上传文件的个数(文件总长度、128M=结果进行取整函数),然后获取副本个数,返回给客户端对应的节点。
⑤客户端开始上传文件(客户端先对文件进行逻辑切分,为物理切分做准备)。
⑥上传第一个数据块。
⑦客户端构建第一个数据块上传通道,同时客户端开启一个守护进程等待上传的结果反馈。构建pipline的过程为:客户端---->第一个副本节点---->第二个副本节点---->第三个副本节点 一次向前反馈结果。
⑧pipline构建完成开始第一个数据块的上传,客户端边上传边切分,文件上传的时候以packet为单位(64kb)
⑨客户端将文件以packet为单位先传给第一个副本节点----->第二个副本节点。。。。。
⑩第一个上传完成后,开始第二个,重复上述上传步骤。
⑪所有文件上传完成后,整个文件就上传成功了,向客户端反馈结果,修改NameNode的元数据。

HDFS的文件下载 读

①客户端向NameNode发送文件下载的请求
②NameNode查询元数据进行校验,不存在或者报错的则进行反馈,存在则会返回对应的文件的blocked以及每一个blockid,每一个副本的存储节点。
③客户端开始下载第一个数据块与对应的副本节点,就近原则下载。
④第一个数据快下载完成后进行校验,校验通过则下载成功。
⑤客户端到对应的第二个数据块节点下载第二个数据块,重复步骤3,4,第二个数据块的下载内容自动追加到本地的第一个数据块的末尾。
⑥所有数据快下载完成后,返回给客户端。

你可能感兴趣的:(HDFS两大核心 文件的读和写)