HDFS写流程:

1、Client和NN连接,创建文件元数据。

2、NN判定元数据是否有效,如是否已经存在等。

3、NN触发副本放置策略,返回一个有序的DN列表。

4、Client和DN、DN与DN之间(以及根据副本策略)建立pipeline连接

5、Client将数据块切分成64K的packet,packet是由chunk(512B)+chunksum(4B校验)填充而成。

6、Client将packet放入发送队列dataqueue中,并向第一个DN发送。

7、后续DN将接收到的packet保存到本地,并pipeline传输到下一个DN。

8、Client在收到第一个DN的ack packet后,即会发送下一个packet。

9、HDFS的这种传输方式,副本数据对于client是透明的。副本数多不会增加明显的写入消耗。

10、当block传输完成,DN们各自向NN汇报。同时Client会继续传输下一下block。即,block写入与汇报是并行的。

HDFS读流程:

1、为了降低整体的带宽消耗和读取延时,HDFS会尽量让读取程序读取离它最近的副本。如本机、本机架、同一数据中心。

2、HDFS读取包含两个方面的主义:

     a、常规意义上读取文件。

          Client和NN交互文件元数据获取fileBlockLocation

          NN按距离策略排序返回block。

          Client拉取block并校验数据完整性。

     b、根据offset自定义读取block,这是HDFS满足分布式计算的核心。

posted on 2020-12-09 22:07  风语者未来  阅读(312)  评论(0)    收藏  举报