hdfs文件写入与读取过程
分类:
文章
•
2023-12-03 13:10:04
文件的写入过程:
- client向namenode请求上传a.txt
- namenode检测client的上传权限
- namenode回答client是否可以上传
- client将文件按照block_size大小将文件分为几份,并向namenode请求上传一个block
- namenode根据datanode上的block信息和机架感知选择三个主机放置三个副本(hadoop默认三个),并生成可以上传的datanode的列表。
- 将生成的可以上传的datanode的列表,这时client就可以直接通过pipeline与datanode通信或者传递信息。
- client与一个datanode建立pipeline,datanode之间也会建立pipeline
- client将block以packet(64k)为单位传递给datanode
- 三个datanode分别将packet信息缓存,此即将block分别复制三个副本。
- 缓存之后datanode会向client发送应答,这样一直进行文件的上传完成副本的缓存与文件的上传。
文件的读取过程
- RPC:向namenode发出请求下载a.txt
- namenode对client进行权限检查,同时对block的文件存在dn进行检查并选出每一个block对应的主机列表
- 向client返回每一个block对应的主机列表。
- client按照返回的主机列表和每一个block所在的主机建立pipeline进行数据读取,且每一个block都需要建立一个pipeline,并行读取
- 开始读取数据,按照packet(64k)的单位进行读取
- block全部读取到client中,client将block进行合并成为一个完整的文件。
