hdfs文件上传流程

1 文件上传

中等描述:

  1. 客户端向namenode通信,请求上传文件,namenode检查目标文件是否已存在,父目录是否存在,该客户端是否有上传权限
  2. namenode返回是否可以上传。
  3. 客户端会先对文件进行逻辑切块,比如一个blok块128m,文件有300m就会被切分成3个块,一个128M、一个128M、一个44M请求第一个 block该传输到哪些datanode服务器上。
  4. namenode返回datanode列表
  5. 为上传文件做准备。构建pipline,将同一个块的所有存储节点构成一个数据流通道。
  6. 开始真正上传文件。上传文件过程中,边上传边切块。以packet(64kb)为单位上传,先上传到第一个datenode01的缓存中,缓存中每当接收一个packet就向本地磁盘写入,并传递给下一个结点。当第一个块上传完成后关闭通道。
  7. 开始上传第二个块,所有块上传完成后namenode向客户端返回结果。
  8. 所有块上传完成后,客户端告知namenode数据上传成功。
  9. namenode更新元数据

1.1 文档

hdfs文件上传流程_第1张图片
hdfs文件上传流程_第2张图片
hdfs文件上传流程_第3张图片
hdfs文件上传流程_第4张图片

1.2 课程

hdfs文件上传流程_第5张图片
hdfs文件上传流程_第6张图片
在这里插入图片描述

2 文件下载

  1. 客户端向namenode发送文件下载请求。
  2. NameNode在自己的元数据库中查询,查询到返回数据的块和存储节点。
    blk_1:hadoop01 hadoop02 hadoop04
    blk_2:hadoop01 hadoop03 hadoop04
    如果查询不到则会报错
    3.客户端拿到数据块的存储节点,先下载第一个块
    下载的时候也是就近原则
  3. 第一个块下载完成后生成一个crc文件,和上传时候的.meta文件进行文件完整度校验(校验的是起始偏移量和末尾偏移量中间的内容)。如果校验通过,则认为第一个块下载成功
  4. 重复3、4
  5. 所有块都下载成功后,向namenode发送响应。

2.1 视频课程

hdfs文件上传流程_第7张图片
在这里插入图片描述

2.2 文档

hdfs文件上传流程_第8张图片
hdfs文件上传流程_第9张图片
hdfs文件上传流程_第10张图片
hdfs文件上传流程_第11张图片

你可能感兴趣的:(hadoop)