上篇文章讲了数据传输的格式,本文就来说说hdfs中写文件的流程。
hdfs客户端写文件的流程,大体可以分为两个步骤:第一步是创建或打开文件,第二步是进行block的写操作。
block的写操作具体又包括向NN请求添加一个新的block,然后根据NN的返回结果,与对应的DN建立连接,并进行数据的发送。
当一个block写完时,再次向NN请求添加新的block,同样根据返回结果与对应的DN建立连接并发送数据,之后不断重复这个过程,直到文件内容全部写完。
下图以创建文件为例,展开描述详细流程:
向NN发送创建文件请求
首先,客户端向NN发送创建文件的请求,在请求中指明文件的位置,文件的权限,文件的block副本数,block大小等。
NN收到请求后,进行有效性检查,以及相应的鉴权动作,然后将操作写入editlog,最后给客户端应答。
向NN发送添加block请求
文件创建成功后,对于业务层的代码来说就是直接进行write写数据了,但在客户端的底层实现中,会先向NN发送一个新增bl