中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是HDFS配額

發布時間:2021-10-13 10:55:49 來源:億速云 閱讀:116 作者:iii 欄目:編程語言

這篇文章主要介紹“什么是HDFS配額”,在日常操作中,相信很多人在什么是HDFS配額問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”什么是HDFS配額”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

【配額】


HDFS中,配額用于限制目錄的使用空間,具體可分為名稱配額空間配額

空間配額指的是單個目錄中所有文件總的大小限制,文件副本的大小也計算在內。

名稱配額指的是根目錄樹中的文件和目錄的最大數量,即遞歸計算子目錄,孫子目錄下的文件和目錄數。

通過如下命令可以對具體目錄設置其配額:

# 設置名稱配額# max_number 為最大文件/目錄數# dirname 為指定的目錄hdfs dfsadmin -setQuota <max_number> <dirname># 設置空間配額# bytes 為最大存儲字節數hdfs dfsadmin -setSpaceQuota <bytes> <dirname>

通過如下命令可以查看目錄的配額情況:

hdfs dfs -count -q /tmp/hncscwc# 顯示結果    # 名稱配額大小  名稱配額剩余大小  空間配額大小  空間配額剩余大小  目錄數  文件數  文件大小  目錄的路徑   none  inf  536870912  536870912  1  0  0  /tmp/hncscwc

通過如下命令可以清除配額:

# 清除名稱配額hdfs dfsadmin -clrQuota <dirname># 清除空間配額額hdfs dfsadmin -clrSpaceQuota <dirname>

【內部實現】


  • 配額在內存中的保存

    配額在內存中是跟隨目錄信息一并存儲的。


    在NN的內部實現中,INodeDirectory類記錄目錄的相關信息,每個目錄都有一個具體的實例對象,該類繼承自抽象類INodeWithAdditionalFields,在父類中有一個features的成員變量,保存了該inode上的所有特性,包括ACL,配額,快照,附加屬性等等。其中配額屬性就記錄了該inode的空間配額,名稱配額以及當前的使用情況。


  • 配額的持久化保存

    設置的配額信息最后會作為一個操作持久化到editlog中,具體記錄目錄的路徑、對應的空間配額、名稱配額。

  • 隨著checkpoint的執行,editlog中的操作信息最終會記錄到fsiamge中保存。

  • 配額的使用

    NN在處理創建文件、目錄、或者寫新的文件,append已有的文件等請求時,會進行對應目錄配額的校驗判斷(包括當前目錄的配額,逐級往上父目錄的配額,祖父目錄的配額等),如果未超過設置的配額,則允許其操作,并在內存中更新當前目錄的使用情況。

【能否針對用戶進行配額的設置】


在HDFS中有用戶、用戶組的概念,即每個文件/目錄屬于指定用戶、用戶組。同時可以通過開啟ACL,為文件/目錄設置訪問權限。這樣HDFS也就支持多用戶了。

在多用戶的真實場景中,通常是以用戶為單位來設置配額,即某個用戶能使用多大的空間。對照HDFS的配額,可能就需要指定某個用戶能寫哪些目錄,然后為這些目錄分別設置配額,來實現用戶配額的功能。

那么,HDFS能否支持直接按照用戶來進行配額呢?或者說,如果要支持按照用戶來進行配額,HDFS需要做哪些改動呢?

首先要考慮到的就是,用戶的配額信息需要進行持久化的存儲,因此需要添加對應的editlog操作,同時fsiamge中也需要進行對應的存儲(即改變fsiamge的存儲信息),然后每個文件進行寫操作,文件拷貝,快照等操作時,需要判斷是否超過用戶的配額。此外在聯邦的場景中,考慮的情況會更復雜。

到目前為止,官方的版本中是不支持對用戶進行配額的設置的

在社區中,看到有類似的問題討論,但沒有實際結論或計劃進行相應的設計開發。

【FAQ】


  • 對某個目錄設置了配額,如果將該目錄改名會怎樣?

    從上面的內部實現中可以知道,配額是目錄屬性的一部分,通過mv將目錄改名,在HDFS中,該目錄對應的inode沒有變化,因此配額信息仍舊是跟隨該目錄一起的。


    hdfs dfsadmin -setSpaceQuota 536870912 /tmp/hncscwchdfs dfs -count -q /tmp/hncscwc    none  inf  536870912  536870912  1  0  0  /tmp/hncscwchdfs dfs -mv /tmp/hncscwc /tmp/spurshdfs dfs -count -q /tmp/hncscwc    none  inf  536870912  536870912  1  0  0  /tmp/spurs
     
  • 子目錄的配額能否大于父目錄的配額?

    子目錄的配額可以大于父目錄的配額,也就是說,HDFS的實現中,設置配額時,并沒有逐級往上去判斷父目錄的配額情況


    但是,在真正進行文件存儲的時候,就會逐級往上判斷是否超過父目錄,祖父目錄等的配額,如果超過則寫入失敗。


    hdfs dfs -count -q /tmp/hncscwc /tmp/hncscwc/hadoop  none  inf   536870912   536870912  2  0  0  /tmp/hncscwc  none  inf  1073741824  1073741824  1  0  0  /tmp/hncscwc/hadoop
     
  • 如果查看當前目錄已使用的空間?

    通過"dfs -count"可以看到具體目錄的配額和已經剩余空間,這樣可以推斷出實際的使用空間。但是對于未設置配額的目錄,配額顯示為none,剩余空間顯示為inf,這樣就無法推斷出目錄實際的使用空間。


    查看源碼發現,可以通過客戶端的getQuotaUsage接口獲取到具體目錄的配額與實際已使用空間大小。


    實際上,"dfs -count"命令也就是調用了該接口拿到相關信息,只是增加了判斷,如果配額為空,則不進行剩余空間的計算。


到此,關于“什么是HDFS配額”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿瓦提县| 贵定县| 鹤峰县| 金堂县| 大渡口区| 富阳市| 保定市| 曲靖市| 兴城市| 凤庆县| 和田县| 宜兴市| 金门县| 仁寿县| 晴隆县| 天镇县| 涞源县| 天津市| 白山市| 双江| 鄂托克前旗| 寿光市| 社旗县| 开封县| 颍上县| 阿克苏市| 布尔津县| 左贡县| 黄梅县| 永吉县| 平遥县| 西林县| 彩票| 西昌市| 正蓝旗| 宜良县| 方正县| 新龙县| 张掖市| 佛学| 当涂县|