【概述】
HDFS客户端在写文件之前需要先获得租约,该租约充当文件的锁,以防止多个客户端对该文件的同时写入。
只要HDFS客户端持有文件的租约,就不允许其他客户端写入该文件。
如果客户端没有在预定义的时间内续订租约,则租约到期,这个时候HDFS服务端将关闭并释放租约,以便其他客户端的写入操作可以获取租约,这个过程也称之为租约恢复。
【租约】
在HDFS内部,租约实现为一个类(Lease),在该类中主要包括这么几个成员
holder:租约持有者(也就是HDFS客户端)
lastUpdate:租约最后一次更新时间
files:该租约持有者打开的文件集合
上面提到了租约的最后更新时间,那就不提到另一个概念:租约的软限制和硬限制。
租约被客户端持有后,并不是就一直归该客户端拥有,客户端必须不断的续约才能持续的持有。
如果超过一段时间没有续约,HDFS允许其他客户端抢占租约并对文件进行操作,租约的软限制和硬限制指的就是这个超时时间。
当前时间减去租约的最后更新时间超过软限制,允许其他HDFS客户端抢占该租约当前持有者打开的文件(默认1分钟)。
当前时间减去租约的最后更新超过硬限制,租约管理线程会强制该租约回收销毁(默认1小时)。
租约 和 HDFS客户端的对应关系为一对一,即:在HDFS服务端,为每个客户端建立一个租约。
【租约的管理】
有租约自然就有租约管理,在