1. 发送请求,连接namenode,执行读取数据
2. namenode接受读取请求后,
首先判断当前这个操作用户是否拥有读取权限,如果不具有直接报错。
如果有读取权限,接着判断要读取的目录下是否存在这个文件,如果不存在,报错,如果存在,则根据机架感应原理,网络拓扑关系,副本机制,返回部分或者全部的block所在的datnode地址
3.当接受部分或全部的block列表后,然后进行并连接datanode节点,开始读取数据
4.当这些地址中的block全部读取完之后,如果之前请求的时部分的block,此时会再次请求namenode。
将剩余或者部分的block的datanode列表返回来,接着运行第三步。
开启读取数据,知道将所有的block读取完成
5,按照block排序,将读取的block一个一个连接起来,形成最终的文件,此时用户就能看到最终的文件了。