HDFS的多級(DISK SSD)儲存策略

2022-07-10 05:45:13 字數 2527 閱讀 7760

歸檔儲存是一種將不斷增長的儲存容量與計算容量分離開來的解決方案。密度更高、儲存成本更低、計算能力更低的節點正在成為可用的、可以在集群中用作冷儲存。根據策略,可以將熱資料移到冷資料。增加節點到冷儲存中可以增加不依賴於集群計算容量的儲存容量。

異構儲存和歸檔儲存提供的框架對hdfs體系結構進行了概括,使其包含了ssd、記憶體等其他型別的儲存介質。使用者可以選擇將資料儲存在ssd或記憶體中以獲得更好的效能。

異構儲存的第一階段(hdfs-2832)改變了datanode儲存模式,從可能對應於多個物理儲存介質的單個儲存器 轉變為 對應於乙個物理儲存介質的多個儲存器 的集合。它還增加了儲存型別的概念,disk 和 ssd,其中 disk 是預設的儲存型別。

為了支援歸檔儲存,新增了一種新的儲存型別 archive,它具有較高儲存密度(儲存容量 petabyte) ,但計算效率很低。

增加了另一種新的儲存型別 ram _ disk,以支援在記憶體中寫入單個副本檔案。

引入了儲存策略的新概念,以便根據儲存策略將檔案儲存在不同的儲存型別中。

我們有以下儲存策略:

更正式地說,儲存策略由以下字段組成:

policy id

policy name

用於塊放置的儲存型別列表

後備儲存型別列表

用於複製後備儲存型別列表

當有足夠的空間時,塊副本將根據 3中指定的儲存型別列表進行儲存。當列表 3中的某些儲存型別空間不足時,分別使用列表 4和 5中指定的後備儲存型別列表替換檔案建立和複製的空間不足儲存型別。

下面是乙個典型的儲存策略表。

policyid

policyname

block placement(n replicas)

fallback storagesfor creation

fallback storagesfor replication

15lazy_persist

ram_disk: 1, disk: n-1

disk

disk

12all_ssd

ssd: n

disk

disk

10one_ssd

ssd: 1, disk: n-1

ssd, disk

ssd, disk

7hot (default)

disk: n

archive

5warm

disk: 1, archive: n-1

archive, disk

archive, disk

2cold

archive: n

注意1: lazy _ persist 策略只對單個副本塊有用。對於具有多個副本的塊,所有副本都將寫入到 disk,因為只將乙個副本寫入 ram _ disk 並不會提高總體效能。

注2: 對於erasure coded檔案,合適的儲存策略是 all _ ssd、 hot、 cold。因此,如果使用者為 erasure coded檔案設定策略而不是上面提到的策略,那麼在建立或移動塊時就不會遵循該策略。

建立檔案或目錄時,不會指定其儲存策略。可以使用「storagepolicies -setstoragepolicy」 命令指定儲存策略。

有效的儲存策略可以通過「storagepolicies -getstoragepolicy」命令進行檢索。

為歸檔資料新增了乙個新的資料遷移工具。這個工具類似於平衡器。它定期掃瞄 hdfs 中的檔案,以檢查塊放置是否滿足儲存策略。對於違反儲存策略的塊,它將副本移動到不同的儲存型別,以滿足儲存策略要求。請注意,只要有可能,它總是嘗試在同一節點內移動塊副本。如果這是不可能的(例如,當乙個節點沒有目標儲存型別) ,那麼它將通過網路將塊副本複製到另乙個節點。

-p

specify a space separated list of hdfs files/dirs to migrate.

-f

specify a local file containing a list of hdfs files/dirs to migrate.

請注意,如果省略-p 和-f 選項,則預設路徑是根目錄。

列出所有的儲存策略。

為檔案或目錄設定儲存策略。

-path

the path referring to either a directory or a file.

-policy

the name of the storage policy.

為檔案或目錄取消儲存策略。在 unset 命令之後,將應用最近父目錄的儲存策略,如果對任何父節點沒有策略,則應用預設儲存策略。

獲取檔案或目錄的儲存策略。

多級的連動

特點 通用性強 實現了script和html分離 一 檔案及原始碼 cs.js 用函式和類兩種方法實現,呼叫時只要呼叫一種就可以了。if isonchange null cascadeselect.onchange function cascadeselect.getattr function at...

多級樹的查詢

start with connect by prior子句實現遞迴查詢 表中第一行1001是1002的父節點,而第二行1002又是1003的父節點,如此迴圈。如題 要求給出其中乙個數字能找出其最終的根節點!應該要怎麼樣實現呢?請看如下sql語句,這裡我就拿1008為例。圖中第一行第乙個num1就是根...

Eureka Server的多級快取

最近加班比較多,所以沒有太多的時間來寫部落格,希望每位小夥伴都是體諒一下。首先介紹一下eureka service的多級快取有哪些,當然在上節的時候也說過了,這裡在說一下,readwritecachemap 讀寫快取 和readonlycachemap 唯讀快取 第一步是先從唯讀快取裡面去獲取資料,...