Hdfs LeaseManager

了解LeaseManager类必须了解Lease结构:
Lease的基本结构变量有:
1. private final String holder; 持有lease的client name
2. private long lastUpdate; 用于检查租约是否过期
3. private final Collection<String> paths = new TreeSet<String>(); 该client持有的租约的文件
Lease的基本方法有:
1. private String findPath(INodeFileUnderConstruction pendingFile)
查找是否该文件持有租约
2. boolean removePath(String src)
将该src的文件的租约

LeaseManager类用来管理文件系统的租约设置,租约是用来对文件系统中并发的文件读写进行加锁机制控制。
1. private final FSNamesystem fsnamesystem;
整个文件系统的操作以及目录树。
2. private SortedMap<String, Lease> leases = new TreeMap<String, Lease>();
保存了LeaseHolder到Lease的映射。
3. private SortedSet<Lease> sortedLeases = new TreeSet<Lease>();
保存了所有lease
4. private SortedMap<String, Lease> sortedLeasesByPath = new TreeMap<String, Lease>();
保存了path到Lease的映射。
重要的方法有:
1. Lease getLease(String holder)
根据holder名称,即client名称,获取其拥有的lease
2. synchronized Lease addLease(String holder, String src)
根据src文件名和holder client name添加租约
3. public Lease getLeaseByPath(String src)
根据Path名称获取拥有的lease
4. synchronized Lease addLease(String holder, String src)
根据client名称添加lease
5. synchronized void removeLease(Lease lease, String src)
根据src路径移除lease
6. synchronized Lease reassignLease(Lease lease, String src, String newHolder)
重新分配租约,将租约分配给新的client
7. synchronized String findPath(INodeFileUnderConstruction pendingFile)
根据INodeFile获取其租约对应的path路径

另外,LeaseManager内部有一个监听的线程class Monitor implements Runnable
用来监听是否lease有效性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值