图解Hadoop文件的上传

hadoop课件 传智播客 hadoop客户端上传文件_数据

如图所示

最开始所有的datanode节点会想namenode进行注册汇报告诉namenode自己还活着可以分配任务给自己

之后客户端会向namenode发送自己要上传a.txt的请求,这时客户端已经根据文件的大小进行了切块,发送请求时也包括了自己切割的块数信息

namenode检查权限是否通过检查通过会将ok的信息返回给客户端

客户端收到ok的信息后向namenode发送上传第一块数据的请求,namenode返回第一个数据块的元数据包括切块要存储的哪几个datanode并将块信息和datanode的信息返回给客户端

客户端和返回的元数据的三台datanode建立连接通道,客户端先向最近的dn01发送另外两台datanode的信息并建立连接,dn01向最近的dn02发送最后一台datanode的信息并建立连接,dn02在与最后一台dn03建立连接,形成一个线性连接,连接完成后依次按照原路返回ok的信息

客户端收到ok的信息后使用分布式输出流(分布式可以不需要一字节一字节的传输,可以先打包在一起)向dn01发送信息,dn01的分布式输入流接收信息,接收到信息时本地输出到本地磁盘持久化,同时使用分布式输出流接收到的数据传送给dn02,dn2输入流接收,输出到本地磁盘持久化,并将数据输出到dn03.dn03将数据磁盘持久化,返回ok上传成功

客户端收到dn01的的写入完成的信息后就与namenode请求下一块的数据并重复这个流程,直到传输完成

=================================================================

在传输的过程中只要dn01完成了数据的持久化客户端就认为传输完成了,不管后续传输结果如何,及时后续传输失败,也可以根据datanode的心跳机制进行数据的备份