HDFS读写数据流程
1.HDFS写数据流
1.客户端通过DistributedFileSystem 向NameNode发送上传文件的请求,NameNode响应请求,然后客户端请求发送第一个Block(默认是128M)请求返回DataNode节点。
2.NameNode接受请求后会返回三个DataNode节点,(返回三个节点是因为HdFS默认保存三个副本并不是只有三个节点)客户端会通过FSDataOutoutStream发送到最近的DateNode节点(就近原则),然后DataNode1会找到另外两个节点奖通信道路建立。
3.DataNode会逐级应答客户端告诉客户端通信通道建立成功。客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet(每个Packet的大小为64k)为单位,dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答。
4.客户端里有两个队列,一个待发送队列,一个应答队列。待发送的队列发送过数据后会将发送过的数据移到应答队列里,在得到DateNode的应答后才会将应答队列里的数据移除队列,标志着发送成功。
5.当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务器。
6.如果在传输过程中有一台DateNode 挂掉了,那么另外两台DataNode会重新建立通道进行传输。在传