HDFS的存儲策略

来源:http://www.cnblogs.com/lzfhope/archive/2017/06/26/7068909.html
-Advertisement-
Play Games

本文介紹hdfs的存儲策略 內容譯自:http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-hdfs/ArchivalStorage.html#Get_Storage_Policy 譯註:存儲策略是在和經濟妥協的一個技術產物。 ...


本文介紹hdfs的存儲策略

內容譯自:http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-hdfs/ArchivalStorage.html#Get_Storage_Policy

 

譯註:存儲策略是在和經濟妥協的一個技術產物。由於存儲技術發展的日新月異,也許將來再考慮這種策略不是很有必要了。雖然從邏輯上來說,總是有相似的問題出現。但將來對於絕大部分問題而言,這些問題已經不是問題了。

 

1.簡介

歸檔存儲用於減少對存儲的壓力。具有高密度存,不那麼貴的存儲的節點,這些接節點的計算能力也一般般,這種節點可以在集群中承當冷存儲(冷宮,冷點)。

可以根據策略要求,數據能從熱點移動到冷點。

為更多的節點添加冷存儲,可以提升集群存儲。

這個框架由多種存儲和歸檔存儲構成,其中還包含SSD和記憶體。

用戶可以選擇在SSD和記憶體中存儲數據,以便提升性能。

譯註:原文說了那麼多,有用的就是兩點:存儲、性能。 這種策略在很多其它系統都是透明的,也不需要它們自己管理。例如rdbms可以不它們的數據存儲的任意地方,不需要特別設定策略。

hdfs之所以要這麼做,是因為hdfs的應用現在變得更加多樣,有的人期望提供類似即席查詢的能力,而有的人僅僅要求偶爾計算一下。

 

2.存儲類型和存儲策略

譯註:原文的一段內容沒有特別含義,稍微啰嗦,所以摘其精要。

存儲類型

  • DISK-普通磁碟,存儲
  • SSD -SSD盤
  • RAM_DISK 記憶體盤
  • ARCHIVE -歸檔/壓縮,不是實際的磁碟類型,而是數據被壓縮存儲。

存儲策略

存儲策略允許不同的文件存儲在不同的存儲類型上。

目前有以下策略:

  • Hot - 存儲和計算都熱。    如果是熱快,那麼複製的目標也是DISK(普通的磁碟)。
  • Cold -用於有限計算的存儲。 數據不再使用,或者需要歸檔的數據被移動到冷存儲。如果數據塊是冷的,則複製使用ARCHIVE.
  • Warm -半冷半熱。warm塊的複製內容,部分放置在DISK,其它的在ARCHIVE.
  • All_SSD - 所有數據存儲在SSD.
  • One_SSD - 一個複製在SSD,其它的在DISK.
  • Lazy_Persist -只針對只有一個複製的數據塊,它們被放在RAM_DISK,之後會被寫入DISK。

 

一個存儲策略,包含以下部分

  1. Policy ID --策略ID
  2. Policy name  --策略名稱
  3. A list of storage types for block placement  --塊存放的有關存儲類型(可以多個)
  4. A list of fallback storage types for file creation--如果創建失敗的替代存儲類型(可以多個)
  5. A list of fallback storage types for replication--如果複製失敗的替代存儲類型(可以多個)

當有足夠空間的時候,塊複製使用下表中第三列所列出的存儲類型。

如果第三列的空間不夠,則考慮用第四列的(創建的時候)或者第五列的(複製的時候)

Policy IDPolicy NameBlock Placement (n  replicas)Fallback storages for creationFallback storages for replication
15 Lazy_Persist RAM_DISK: 1, DISK: n-1 DISK DISK
12 All_SSD SSD: n DISK DISK
10 One_SSD SSD: 1, DISK: n-1 SSD, DISK SSD, DISK
7 Hot (default) DISK: n <none> ARCHIVE
5 Warm DISK: 1, ARCHIVE: n-1 ARCHIVE, DISK ARCHIVE, DISK
2 Cold ARCHIVE: n <none> <none>

註意LAZY_PERSIST策略只用於複製一個塊(換言之,沒有數據冗餘)。

譯註:原文的意思是如果數據一部分在RAM_DISK,一部分在磁碟上,不會提高性能,所以只能用於一個複製的情況。本人不太理解。不過原文這麼說,就先這麼記著吧。

 

存儲策略的解析

當創建文件/目錄的時候,並未為它們設定了存儲策略。 但可以通過hdfs storagepolicies命令來管理。

文件/路徑的存儲策略按照如下規則解析:

  1. 如果有設定特定的策略,那麼就是那個策略

  2. 如果沒有設定,就返回上級目錄的存儲策略。如果是沒有策略的根目錄,那麼返回預設的存儲策略(hot-編號7的)。

配置

  • dfs.storage.policy.enabled -  啟用/關閉存儲策略特性。預設是true(開啟)
  • dfs.datanode.data.dir -  數據路徑,多個以逗號分隔,但必須在前面帶上存儲類型。例如:

    1. A datanode storage location /grid/dn/disk0 on DISK should be configured with [DISK]file:///grid/dn/disk0
    2. A datanode storage location /grid/dn/ssd0 on SSD can should configured with [SSD]file:///grid/dn/ssd0
    3. A datanode storage location /grid/dn/archive0 on ARCHIVE should be configured with [ARCHIVE]file:///grid/dn/archive0
    4. A datanode storage location /grid/dn/ram0 on RAM_DISK should be configured with [RAM_DISK]file:///grid/dn/ram0

    如果沒有設定存儲類型,那麼使用預設的([DISK])

      譯註:例如DN1有兩個存儲類型  [DISK]file:///grid/dn/disk0,[SSD]file:///grid/dn/ssd0   

                 每個節點可以具體配置,不需要都一樣。當然如果都一樣,可以稍微提升系統的性能。

 

3.MOVER-一個新的數據遷移工具

這個工具用戶歸檔數據,它類似於Balancer(移動數據方面)。MOVER定期掃描HDFS文件,檢查文件的存放是否符合它自身的存儲策略。如果數據塊不符合自己的策略,它會把數據移動到該去的地方。

語法

hdfs mover [-p <files/dirs> | -f <local file name>]

-p  指定要遷移的文件/目錄,多個以空格分隔

-f   指定本地一個文件路徑,該文件列出了需要遷移的文件或者目錄(一個一行)

如果不指定參數,那麼就移動根目錄。

 

4.存儲策略命令

列出所有存儲策略

hdfs storagepolicies -listPolicies

設置存儲策略

hdfs storagepolicies -setStoragePolicy -path <path> -policy <policy>

例如  hdfs storagepolicies -setStoragePolicy -path /tmp -policy ALL_SSD

取消存儲策略

hdfs storagepolicies -unsetStoragePolicy -path <path>

之後該目錄或者文件,以其上級的目錄為準,如果是根目錄,那麼就是HOT

獲取存取策略

hdfs storagepolicies -getStoragePolicy -path <path>

 

---

譯註:如果你的項目很有錢,不放可以把一些不是太大的數據放在ALL_SSD中,例如個數據節點上放個10t。甚至如果有更多錢,可以組成ssd raid。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原理 FPS的計算 CoreAnimation有一個很好用的類CADisplayLink,這個類會在每一幀繪製之前調用,並且可以獲取時間戳。於是,我們只要統計出,在1s內的幀數即可。 記憶體和CPU信息的獲取 CPU和記憶體的獲取採用了mach頭文件中的方法,調用了底層API,採用C方式來獲取。 LHP ...
  • 一,工程圖。 二,代碼。 #import "ViewController.h" #import "Base64CodeByteFunc.h" @interface ViewController () @end @implementation ViewController - (void)viewDi ...
  • 系統管理賬戶登錄系統會大大降低系統的安全性,所以為了更安全的使用電腦,通常我們都會創建一個新的用戶來登錄系統,MySQL也不例外。MySQL中創建用戶與授權的實現方法,對於剛開始接觸mysql的朋友可以參考下! 創建 Mysql創建用戶的方法分成三種:INSERTUSER表的方法、CREATEUS ...
  • 1.查詢dblink語句 col owner for a20col db_link for a30col username for a20col host for a30set linesize 120set pages 60select * from dba_db_links order by o ...
  • 官方文檔鏈接 http://docs.oracle.com/cd/E11882_01/server.112/e41134/protection.htm SBYDB02000 最大可用模式(Maximum Availability) 這種保護模式在 不影響主庫可用性 的前提下提供最高水平的數據保護 在 ...
  • 第一次寫博客,哈哈,內心有種無法掩蓋的小激動。 我有個問題,如何才能成為一名好程式員?是代碼風騷?還是會不間斷的學習?歡迎大家給出自己的建議。 好了,廢話不多說了,進入今天的正題。 我不知道你們在用windows版的redis的時候有沒有遇到這麼幾個坑: 1.# Warning: no config ...
  • 存儲數據是為了查找數據,存儲結構影響數據查找的性能。對無序數據進行查找,最快的查找演算法是哈希查找;對有序數據進行查找,最快的查找演算法是平衡樹查找。在傳統的關係型資料庫中,聚集索引和非聚集索引都是平衡樹(B-Tree)類型的存儲結構,用於順序存儲數據,便於實現數據的快速查找。除了提升數據查找的性能之外 ...
  • " 1、Oracle 中的三大分頁方法 " "1.1、通過分析函數分頁" "1.2、通過 ROWNUM 分頁" "1.3、通過 ROWID 分頁" " 2、Oracle 分頁解決方案淺析 " "2.1、純後端代碼完成分頁" "2.2、通過存儲過程來分頁" "2.3、兩個通用的分頁存儲過程" " 3、 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...