HDFS 从客户端写入到 DataNode 时,ACK 是否三个备份都写成功之后再确认成功操作?

时间:2021-09-29 10:13:51

ACK 是否三个备份都写成功之后再确认成功操作?

不是的,只要成功写入的节点数量达到dfs.replication.min(默认为1),那么就任务是写成功的

正常情况下:

① 在进行写操作的时候(以默认备份3份为例),DataNode_1接受数据后,首先将数据写入buffer,再将数据写入DatNode_2,写入成功后将 buffer 中的数据写入本地磁盘,并等待ACK信息

② 重复上一个步骤,DataNode_2写入本地磁盘后,等待ACK信息

③ 如果ACK都成功返回后,发送给Client,本次写入成功

如果一个节点或多个节点写入失败:

① 只要成功写入的节点数量达到dfs.replication.min(默认为1),那么就任务是写成功的。然后NameNode会通过异步的方式将block复制到其他节点,使数据副本达到dfs.replication参数配置的个数


1、HDFS写文件过程分析
http://shiyanjun.cn/archives/942.html

2、Hadoop Pipeline详解
http://dj1211.com/?p=178


1、Hadoop深入学习:解析HDFS的写文件流程
http://flyingdutchman.iteye.com/blog/1900536

2、HDFS 1. 读写流程剖析
https://www.jianshu.com/p/7d1bdd23c460

3、HDFS 异常处理与恢复
http://www.cnblogs.com/mindwind/p/4833098.html