1.客户端和namenode进行通信查询元数据(block所在的datanode节点),找到block所在的datanode服务器 2. 挑选一台datanode,请求建立连接(就近原则,然后随机),请求建立socket流 3. datanode开始发送数据(从磁盘里面读取数据放入流,以packet为单位来做校验) 4. 客户端以packet为单位接受,首先在本地缓冲,然后写入目标文件,后面的block追加合并到这个文件,最后合成最终需要的文件。