HDFS读写数据流程

HDFS中的block、packet、chunk

  1. Block
    这个大家应该知道,文件上传前需要分块,这个块就是block,一般为128MB。
  2. packet
    packet是第二大的单位,它是client端向DataNode,或DataNode的PipLine之间传数据的基本单位,默认64KB。
  3. chunk
    chunk是最小的单位,它是client向DataNode,或DataNode的PipLine之间进行数据校验的基本单位,默认512Byte,因为用作校验,故每个chunk需要带有4Byte的校验位。所以实际每个chunk写入packet的大小为516Byte。

HDFS读数据流程

在这里插入图片描述

注意:

  1. datanode根据它们与客户端的距离(集群的网络拓扑)来进行排序。
  2. FSdataInputStream根据datanode的距离顺序读取数据块,每读完一个块,即关闭与该datanode的链接。
  3. FSdataInputStream与datanode的数据以packet为基本单位。

HDFS写流程

在这里插入图片描述

注意:

  1. 文件在客户端完成逻辑分片
  2. DistributedFileSystem向namenode请求上传文件时,namenode会检查是否已存在文件及文件读写权限。若通过检查,直接先将操作写入EditLog。
  3. 数据packet在datanode中会先写入ByteBuffer中,在由ByteBuffer写入block中
  4. 当第一个datanode完成数据写入后即返回应答,不必等所有的datanode都完成数据写入。

你可能感兴趣的:(HDFS读写数据流程)