日本乱偷中文字幕,美女脱内衣18禁免费看,亚洲国产精品丝袜在线观看,18女人腿打开无遮挡,廖承宇chinese野战做受

leaseManager詳解

簡(jiǎn)介

HDFS作為一個(gè)分布式文件系統,只允許一個(gè)客戶(hù)端同時(shí)對一個(gè)文件進(jìn)行修改操作。租約就是為了實(shí)現獨占的寫(xiě)操作的機制。
HDFS租約的主要實(shí)現類(lèi)是LeaseManager。

Lease 的使用場(chǎng)景如下:

lease_quest

  • 客戶(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的租約維護的集合中。
  • 在NameNode中租約持有者DFSClient并不是DFSClient類(lèi),而是clientName,他的生成規則如下
# 其中dfsClientConf.taskIdmapreduce.task.attempt.id 配置獲取默認為NONMAPREDUCE
clientName = "DFSClient_" + dfsClientConf.taskId + "_" + DFSUtil.getRandom().nextInt()  + "_" + Thread.currentThread().getId();

leaseManager

  • 軟限制 & 硬限制

    • 軟限制是能容忍的客戶(hù)端刷新租約的最長(cháng)時(shí)間限制,為60s不可更改,如果客戶(hù)端的租約超過(guò)60s未更新,則其他客戶(hù)端請求文件就可以執行租約恢復操作
    • 硬限制就是namenode能容忍的文件最長(cháng)不放開(kāi)租約的時(shí)間,在超過(guò)軟限制后,并沒(méi)有客戶(hù)端請求更改文件導致沒(méi)有觸發(fā)租約恢復,那么只能等待LeaseManager的周期線(xiàn)程檢查這個(gè)超過(guò)這個(gè)時(shí)限的租約強制進(jìn)行租約恢復?;謴偷慕巧矔?huì )變成namenode。
  • LeaseManager 主要用戶(hù)租約的管理,其實(shí)就是保存 用戶(hù) + 文件 + 租約的集合,LeaseManager內部的集合有2個(gè)(Hadoop 3.3.1版本)

    • leases:為一個(gè)map,記錄clientName 對應的Lease。
    • leasesById:以路徑字典序保存了文件的nodeId與租約的對應關(guān)系,用來(lái)其他類(lèi)快速獲取UnderConstruction的文件。
  • 用戶(hù)為DFSClient 索引者一個(gè)租約,一個(gè)租約下面掛載了多個(gè)文件,也就是說(shuō)一個(gè)客戶(hù)端操作多個(gè)文件租約還是同一個(gè)。

  • 內部線(xiàn)程周期調度檢查是否超出硬限制,如果超過(guò)硬限制,則將該租約下的所有文件都執行租約恢復,恢復的執行者為HDFS_NameNode。



標 題:《leaseManager詳解
作 者:zeekling
提 示:轉載請注明文章轉載自個(gè)人博客:浪浪山旁那個(gè)村

    評論
    0 評論
avatar

取消
日本乱偷中文字幕,美女脱内衣18禁免费看,亚洲国产精品丝袜在线观看,18女人腿打开无遮挡,廖承宇chinese野战做受