当向hdfs写数据的过程中,当写某一副本时出错如何处理?

当向hdfs写数据的过程中,当写某一副本时出错如何处理?
具体流程:
1)关闭管道;
2)将已发送至管道,但是未经确认的数据重写回数据队列;
3)从namenode中获取对应租约的最新更新时间,将该时间作为版本号,将正常运行的datanode的版本号更新,等出故障的节点恢复后,由于版本号不对,将会被删除;
4)从正常datanode节点中选出一个主datanode节点,并与其他正常运行的datanode界定啊通信,获取当前文件在每个datanode中的数据块大小,并从所有数据块中选择最小的一块,将对应文件同步到每个datanode节点,
5)FSFileOutputStream 继续写数据到datanodes
6)当文件关闭后,Namenode检查当前文件副本个数是否小于规定的最小值,不够则在其他节点上创建新的副本。
租约:
1)每个客户端用户持有一个租约
2)每个租约内部包含1个租约持有者的信息,还有此租约对应的文件id列表,表示当前租约持有者正在写这些文件id对应的文件
3)每个租约包含有一个最新的更新时间,最新更新时间将会决定此租约是否过期,过期的租约会导致租约持有者无法继续执行写数据到文件中,除非进行租约的更新。