假如有三个DN节点,按机架距离感知依次为d1,d2,d3。传输某一个packet时, d2长时间没有返回ack,NN认为d2故障,剔除掉d2重新建立数据通道。同时客户端将发送队列中的packet返回到等待队列,这样做的目的是为了保证d3不出现数据缺失。
但是我的d1在故障前已经接受到了最新的1个packet并且已经给NN发送了ack,发送队列回滚后,重新与d1建立通道并发送数据,这样做应该会造成d1中的数据重复。
所以这里解决方式可能有两种选择,一个是通过NN根据返回ack发现数据重复,请求d1删除相应数据;二是d1根据接受到的packet的校验和实现去重。
但是这两种方式是猜想,也没有查到相应的资料,是否还有其他解决方式?
还有一个问题为什么csdn问答里面选择问题标签的时候没有大数据或者hdfs的标签,也不能自定义。