美文网首页
【精】一文彻底给你讲清HDFS租约恢复和块恢复机制

【精】一文彻底给你讲清HDFS租约恢复和块恢复机制

作者: 小北觅 | 来源:发表于2022-03-09 12:17 被阅读0次

所有HDFS系列文章都收藏在此专栏中,欢迎订阅。
https://blog.csdn.net/yexiguafu/category_11153078.html

一、前置概念

① Lease(租约)
HDFS不支持客户端的并行写操作,也就是说一个文件同一时刻只能由一个客户端来写。因此就需要一种机制来保证对HDFS文件写的互斥。HDFS采用了租约(Lease)机制来实现此功能。租约的意思就是:Namenode给租约持有者(Lease Holder,一般是一个客户端)在规定时间内拥有写文件的权限的合同。

② softLimit和hardLimit
在①中我们说了,是在规定时间内拥有写文件的权限。这里面有两个时间概念。

  • softLimit:软限制是写文件规定的租约超时时间,默认60秒,不可以配置
  • hardLimit:硬限制是用于考虑文件关闭异常时,强制收回租约的时间,默认60分钟,不可以配置。LeaseManager类中有一个Monitor内部类定期的去检查租约的更新情况,当超过hardLimit时,会触发租约恢复机制。

③ Block Recovery(块恢复)
说块恢复之前,必须要说租约恢复。在HDFS中,客户端要想写文件,必须要获得该文件的租约。如果客户端还想要继续写文件,那么必须要在提前定义好的时间周期里(soft limit and hard limit)进行renew 租约。如果没有显式地renew租约或者客户端挂掉了,那么HDFS就会关闭这个文件并且释放掉代表这个客户端的租约,从而让其他的客户端能够写文件。这个过程就叫做lease recovery(租约恢复)。那block recovery(块恢复)呢,其实是在租约恢复里触发的一个过程。在租约恢复的过程中,只有当文件的最后一个block不是COMPLETE状态的时候对这个block进行block recovery。块恢复的目的是让存储最后一个块的副本的所有datanode上最后一个块的内容相同。

④ truncateRecovery和copyOnTruncate(如果不理解可以先跳过,后续看源码再回来看)

租约恢复的源码中,经常有这两个boolean类型的变量:truncateRecoverycopyOnTruncate

truncateRecovery表示当前是不是对truncate操作的block进行recovery。代码如下:

      // 拿到Feature
      BlockUnderConstructionFeature uc =
          lastBlock.getUnderConstructionFeature();
      // determine if last block was intended to be truncated
      BlockInfo recoveryBlock = uc.getTruncateBlock();
      // 如果recoveryBlock不等于null。说明是truncate操作的block,那truncateRecovery就是true。
      boolean truncateRecovery = recoveryBlock != null;

copyOnTruncate表示是否是在truncate时复制。代码如下:

boolean copyOnTruncate = truncateRecovery &&
          recoveryBlock.getBlockId() != lastBlock.getBlockId();

计算这个copyOnTruncate需要两个步骤,因为是&&短路与操作,所以只有当truncateRecovery为true时才可能计算后面的表达式。我们假设truncateRecovery==true,也就是说是对truncate操作的block进行recovery。接着recoveryBlock.getBlockId() != lastBlock.getBlockId(); 这里不等于的情况是:truncate操作指定的源block和当前块不一样,因此后续需要让当前块去和源block一致。

相关文章

  • 【精】一文彻底给你讲清HDFS租约恢复和块恢复机制

    一、前置概念 ① Lease(租约)HDFS不支持客户端的并行写操作,也就是说一个文件同一时刻只能由一个客户端来写...

  • HDFS的租约机制

  • HDFS Lease管理

    HDFS 不支持客户端的并行写操作,那么这就需要一种机制来保证对HDFS文件操作的互斥,HDFS 提供了租约机制来...

  • 华为CE-功能记录

    ERROR-DOWN保护机制 开启保护机制: 从error-down恢复 手动恢复 自动恢复 流量镜像 nqa探测...

  • 106_es生产集群备份恢复之基于snapshot+hdfs+r

    106_es生产集群备份恢复之基于snapshot+hdfs+restore进行数据恢复 1、基于snapshot...

  • 网站测试清单(4)

    十二:错误处理 1.是否建立自动错误监察恢复机制,以保持系统运行? 2.如果系统崩溃,重启和恢复机制是否有效可靠?...

  • 租约机制

    产生历史 1.master/slave架构 在介绍租约机制之前,我们必须要先介绍一个分布式系统中常用的系统架构:m...

  • xcode备份和恢复代码块

    自定义的代码块会大幅提升你的敲码速度,自然显的高大上。但是积攒了好久的代码块,突然有一天要换电脑,不知道怎么备份这...

  • HDFS详解

    认识HDFS HDFS的特点: 高容错性高吞吐量故障的检测和自动快速恢复流式的数据访问大数据集一次写入,多次读写 ...

  • 备份-恢复机制

    redis持久化RDB和AOF

网友评论

      本文标题:【精】一文彻底给你讲清HDFS租约恢复和块恢复机制

      本文链接:https://www.haomeiwen.com/subject/pcstdrtx.html