Hadoop的写和读流程
原创
©著作权归作者所有:来自51CTO博客作者wx5fe070c23a956的原创作品,请联系作者获取转载授权,否则将追究法律责任
写流程
1.启动NN进程,提供分布式客户端
2.客户端发送写请求,NN判断是否有权限,路径是否合法
3.NN进程判断合法,返回允许上传文件
4.客户端根据文件设置大小,请求NN发送DN列表
5.NN进程根据文件副本数,根据机架感知,返回dn列表
6.客户端会请求举例最近的DN节点,再由DN列表中的每个DN节点都请求举例最近的DN节点,建立数据传输通道
7.通道建立完成,客户端将第一块的数据,封装为一个个packet,发送到通道的下一个节点
通道的每一个DN节点在收到packet后,进行校验,检验合法,罗盘存储,将packet发送到下一个DN节点,回复客户端ack确认消息!
8.第一个块传输完成后,DN向NN上报块的消息,只要有一个DN节点上报块信息,NN就认为这个块已经传输完成,通道关闭,
开始下一个块的传输
9.下一个块依次按照④-⑧流程传输
10.所有的块传输完成后,NN响应客户端传输完成,客户端关闭输出流
读流程
1.启动服务端NN,DN进程,提供一个分布式文件系统客户端
2.由客户端向NN发送请求,请求下载一个文件,NN对请求进行合法性检查(权限,路径是否合法)
3.如果合法,NN响应客户端允许下载,同时返回当前下载文件的所有元数据信息(块的映射信息)
4.客户端根据返回的元数据信息,去每个对应的DN节点按照顺序依次下载每个块
机架感知
在本地机架挑选一个节点,保存第一个副本!如果本地机架没有DN节点,挑选距离本地机架最近的一个节点!
在本机机架挑选另一个节点,保存第二个副本!如果本地机架没有DN节点,挑选距离本地机架最近的一个节点!
在其他机架选择一个节点,保存第三个副本!