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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值