leaseManager詳解
簡(jiǎn)介 HDFS作為一個(gè)分布式文件系統,只允許一個(gè)客戶(hù)端同時(shí)對一個(gè)文件進(jìn)行修改操作。租約就是為了實(shí)現獨占的寫(xiě)操作的機制。 HDFS租約的主要實(shí)現類(lèi)是LeaseManager。 Lease 的使用場(chǎng)景如下: 客戶(hù)端在申請創(chuàng )建新的文件或者向文件追加都會(huì )先向NameNode申請獲得inode或者最后一個(gè)塊的信息 在NameNode中FSNamesystem會(huì )調用recoverLeaseInternal檢查文件是否是UnderConstruction,是UnderConstruction的前提下,在leaseManager中是否這個(gè)client已經(jīng)持有租約,如果有則拋出已經(jīng)持有租約的異常 再檢查文件的原來(lái)的租約持有者的的租約是否超過(guò)了軟限制,如果超過(guò)了軟限制則執行租約恢復internalReleaseLease進(jìn)行租約恢復。 因為在文件是UnderConstruction前提下檢查,文件必定有一個(gè)租約持有者,所以,直接拋出已經(jīng)有另一個(gè)租約持有者的異常。 如果文件不是在UnderConstruction狀態(tài),則直接為這個(gè)發(fā)起請求的客戶(hù)端構造租約,加入到LeaseManager的租約維護的集合中....