leaseManager详解
简介 HDFS作为一个分布式文件系统,只允许一个客户端同时对一个文件进行修改操作。租约就是为了实现独占的写操作的机制。 HDFS租约的主要实现类是LeaseManager。 Lease 的使用场景如下: 客户端在申请创建新的文件或者向文件追加都会先向NameNode申请获得inode或者最后一个块的信息 在NameNode中FSNamesystem会调用recoverLeaseInternal检查文件是否是UnderConstruction,是UnderConstruction的前提下,在leaseManager中是否这个client已经持有租约,如果有则抛出已经持有租约的异常 再检查文件的原来的租约持有者的的租约是否超过了软限制,如果超过了软限制则执行租约恢复internalReleaseLease进行租约恢复。 因为在文件是UnderConstruction前提下检查,文件必定有一个租约持有者,所以,直接抛出已经有另一个租约持有者的异常。 如果文件不是在UnderConstruction状态,则直接为这个发起请求的客户端构造租约,加入到LeaseManager的租约维护的集合中....