一、HDFS 写流程
创建文件
1).HDFS client向HDFS写入数据,先调用DistributedFileSystem.create()
2).RPC调用namenode(NameNodeRpcServer)的create()方法。会在HDFS目录树中指定的路径,添加新文件,并将操作记录在edits.log中。namenode.create()方法执行完后,返回一个FSDataOutputStream,它是DFSOutputStream的包装类。
建立数据流管道pipeline
3).client调用DFSOutputStream.write()写数据
4).DFSOutputStream通过RPC调用namenode的addBlock,向namenode申请一个空的数据块block
5).addBlock返回LocatedBlock对象:此对象中包含了当前blk要存储在哪三个datanode的信息,比如dn1,dn2,dn3
6).客户端,根据位置信息,建立数据流管道。
向数据流管道写当前块的数据
7).写数据时,先将数据写入一个检验块chunk中,写满512字节后,对此chunk计算校验和checksum值(4字节)
8).然后将chunk及对应校验和写入packet中&#x