简单描述HDFS上传数据的流程并附简易图:
HDFS上传文件流程(写数据流程):
1.比如客户端现在需要上传一个300M的文件,客户端得先请求namenode,告诉它我要上传这个300M的文件。
2.namenode会根据datanode注册时汇报自己的存储状态来判断客户端能否上传,能的话会返回一个OK给客户端。
3.这是客户端会根据自己的文件大小物理切快(默认以128M切割),再请求namenode,请求上传第一块数据。
4.namenode收到请求后会根据datanode的存储状态,向客户端返回可用的三台datanode节点机器。
5.客户端再去和三个datanode节点建立链接通信,确认状态。
6.三台datanode都连通后并且会向客户端返回OK。
7.接下来客户端会把第一块数据用数据包的方式通过分布式输出流传输到最近的一台节点上,完后datanode节点之间会相互传输。
8.都传输完后会给客户端发出信号回复。
注:由于客户端只传输给最近的一个节点上,之后是节点之间的相互传递,所以有可能第一台传输成功,节点之间传输失败后也会向客户端返回上传成功的信号。
9.之后重复3–8步骤依次传输后面的数据块。
附图如下: