HDFS写数据流程:
1、客户端通过DirstributFileSystem模块向HDFS的NameNode请求上传文件
2、Name Node接收到客户端的请求之后,会检查客户端权限,并检查,客户端需要传送的文件或者其父目录是否存在,若不存在则响应客户端可以上传
3、客户端向Name Node请求上传第一个快(block)
4、Name Node返回可以上传的DataNode
5、客户端创建FSDataOutputSystem 对象,通过该对象请求和第一个DataNode建立连接
6、Name Node与第一个DaTa Node建立连接后,第一个DataNode与第二个DATa Node建立连接,第二个DATa Node与第三个DATa Node建立连接
7、第二个DATa Node与第三个DATa Node建立连接成功之后,会应答第二个节点,第二个节点接着应答第一个节点,第一个节点接着应答客户端
8、客户端将数据包传输到第一个节点(packet(数据包)64kb)
9、第一个节点接收到第一个数据包之后,将数据包传输给第二节点,接着第二节点传输到第三个节点
10、数据传输完成之后,客户端会给Name Node一个传输完成的信息
11、客户端关闭流(FSDataOutputSystem)