- client初始化一个DFS对象,DFS向NN发起RPC调用请求创建一个文件。NN会执行各种检查,确保要创建的文件不存在且客户端有创建文件的权限。检查通过,NN会在namespace中创建一个entry条目,该条目无任何block。
- 响应可以创建。
- 客户端将待上传的文件切块,然后向NN发送请求,上传第一块block。
- NN响应一组DN节点信息。
- client调用DFSOutputSteam的write方法,向DN写入数据。数据首先被写入FSDataOutputSteam对象内部的Buffer中,然后将数据切分为一个个大小为64kb的packet数据包,以packet为最小单位将数据发送到由NN响应的一组DN形成的Pipeline管道中的第一个DN,并由第一个DN继续发送其他节点的数据。
- 这组DN的pipeline反方向上发送ACK,最终由第一个DN将ACK发送给Client。
- 完成传输后,由client调用FSDataOutputSteam的close方法,关闭输出流。
- 调用DFS的complete方法通知NN文件写入完成。
hdfs写入过程
最新推荐文章于 2024-06-07 12:43:01 发布