2.6 HDFS读写流程

通过漫画理解hdfs读写流程:

写数据流程:

每个元素的职责:

client:客户端发起读写请求

NameNode:只有一个,我维护整个环境

DataNode:负责存储数据,可以有上千个

写数据流程(part1):

需求:想要发送200MB数据

客户端处理数据2要素:

1,客户端需要把文件拆成128M的数据块

2,每一个block存储在多个位置

1,bolck操作是按照顺序的

2,按照副本数量和副本位置将数据块存储到DataNode上

3,第一个数据负责上传,对饮的DataNode会自动复制到其他DataNode上

副本通道:副本之间互相拷贝数据

每个DataNode拷贝完成后会上传到NameNode

第一个数据块写完后,后续数据块和上述内容一致

写完所有数据块后,关闭写入数据

客户端:负责拆分数据

NameNode:对于每一个bock分配地址

DataNode:通过副本通道保存数据

读数据:

向NameNode请求数据的存储的数据块个数及其存储位置信息,获取后向对应的NameNode拿数据

常见错误及其解决方案:

节点问题:DataNode通过心跳机制向NameNode发送数据

网络错误:block report,通过Checksum来检查数据完整性

写错误:DataNode向Client返回ACK

读错误:读数据没有响应自动跳到其他的副本节点

NameNode:维护和更新两张表

1,List of Blocks

2,List of Datanodes

DataNode错误:

1,当block出现问题,更新表1

2,当DataNode出现问题,更新表1,2

NameNode通过表一查询,对于没有完全完成副本拷贝的block标记为“under replicated”的block

三副本放置策略:

第一个副本是随机放置

第二三个副本放置在别的机架的不同节点上

支持自定义放置策略

results matching ""

    No results matching ""