HDFS的读写流程

一,HDFS的读写流程

1. hdfs的写入流程

HDFS的读写流程_第1张图片

文上传流程如下:

  • 创建文件: ①HDFS client向HDFS写入数据,先调用DistributedFileSystem.create() ②RPC调用namenode的create(),会在HDFS目录树中指定的路径,添加新文件;并将操作记录在edits.log中 namenode.create()方法执行完后,返回一个FSDataOutputStream,它是DFSOutputStream的包装类

  • 建立数据流管道pipeline ③client调用DFSOutputStream.write()写数据(先写第一个块的数据,暂时叫blk1) ④DFSOutputStream通过RPC调用namenode的addBlock,向namenode申请一个空的数据块block ⑤addBlock返回LocatedBlock对象;此对象中包含了当前blk要存储在哪三个datanode的信息,比如dn1、dn2、dn3 ⑥客户端,根据位置信息,建立数据流管道(图中蓝色线条)

  • 向数据流管道写当前块的数据 ⑦写数据时,先将数据写入一个检验块chunk中,写满512字节后,对此chunk计算校验和checksum值(4字节) ⑧然后将chunk及对应校验和写入packet中,一个packet是64KB ⑨随着源源不断的带校验和的chunk写入packet,当p

你可能感兴趣的:(大数据,hadoop,big,data)