- 写入流程
- 客户端给NameNode通信,创建文件
- NameNode判断文件是否存在,是否有权限,如果有就创建文件,否则失败报错
- 客户端将文件切片,并以队列缓冲区中管理这些切片,并向NameNode申请新的blocks,获得用来存储切片的DataNode列表
- 客户端将切片以管道(pipleline)的方式写到DataNode的block块上,DataNode根据副本策略将切片传递给其它DataNode
- DataNode给客户端返回ACK包,如果成功则执行下一个切片,如果失败就重新开始。
- 读取流程
- 客户端向远程NameNode发送RPC请求
- NameNode查找文件对应的block块,并返回给Client,DataNode列表
- 客户端以pipeline的方式读取DN中的block信息
- 客户端读取block块后,使用校验和,判断block块是否损坏,如果损坏,这读取另外DataNode上的数据;如果没有损坏,则通知Namenode进行下一个block块的读取
转载于:https://www.cnblogs.com/zhichun/p/11542404.html