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满足分布式计算的核心。

浙公网安备 33010602011771号