写入数据流程,即客户端如何把数据写入hdfs集群,底层原理如下:
右侧为hdfs集群,含有NameNode和DataNode节点,左侧为客户端准备把数据传送到集群,首先创建客户端(分布式的文件系统),创建好客户端后向NameNode请求,NameNode要进行两个方面的校验,
1.检查权限,即有没有权限写;
2.检查目录结构是否存在;
检查完毕响应可以上传,请求上传第一个Block,请求返回DataNode,选择策略,副本存储节点选择:
1.本地节点;
2.其他机架节点;
3.其他机架另外一个节点;
返回三个节点,表示采用这三个节点存储数据;
接下来创建数据流写数据,请求建立Block传输通道.数据写入一方面是写入磁盘,另外一方面在内存中的数据传输到下一个节点。流中的最小单位是packet(64k),写流时会创建缓冲队列,在缓冲队列里面存储了chunk512byte(字节)+chunksum4byte(校验位)=516byte,积累64k后就形成一个packet再发送到下一个datanode。都接收成功就会收到一个应答。
在packet发送的时候,会存储缓冲数据,都应答成功后会删除,主要是为了发送不成功会使用备份数据下次再发。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)