淘先锋技术网

首页 1 2 3 4 5 6 7

一.HDFS的读取流程

1. 客户端请求Namenode,读数据

2. Namenode接受到客户端的请求后,会先判断该客户是否有写入的权限,没有则直接报错,有则继续判断该文件是否存在,没有则直接报错,有则返回给客户端,该文件的部分或者所有的block块的地址,这些地址都是活跃的

3.client(客户端)根据Namenode返回Datanode队列,并行的从这些Datanode中读取block块的数据

4. 上述block块内容读取完毕后,会继续访问Namenode剩余部分或者全部的block块的地址,然后并行读取,直至所有的block读取完成

5. 按照block的信息(编号等),将这些block块组合成一个完整文件,至此HDFS读数据完成

 

二. HDFS的写入流程

1. 客户端请求Namenode上传数据

2. Namenode接受客户端的请求后,会先判断该客户端是否有写入的权限,如果没有直接报错,如果有权限,则会判断该文件的父目录是否存在,如果不存在,直接报错,如果存在,则告知客户端可以上传

3. 按照指定的block快大小,对文件进行切分操作

4. 请求Namenode第一个block块上传的位置,即到哪些Datanode中

5. Namenode会根据副本机制,负载均衡,机架感知原理及网络拓扑图,获取存储该block的Datanode队列(这些Datanode都是活跃的)

6. 根据Namenode返回的Datanode队列,和第一个datanode建立连接

7. 依次和其他的Datanode建立连接,形成传输管道

8. 采用数据报包(最大64KB)的方式发送数据,按照传输管道依次发送,并建立反向应答机制(ACK机制)

9.正常的IO操作,即:上传数据,直至第一个block块上传完毕

10. 返回第四步,然后往下重复执行(即:询问第二个block块存储到哪里)直至所有的block块上传完毕,此时,HDFS数据写入动作完成