首頁 系統教程 Linux 優化HDFS資料存取效率:利用資料熱度與冷熱度進行管理

優化HDFS資料存取效率:利用資料熱度與冷熱度進行管理

Jan 15, 2024 am 09:18 AM
linux linux教程 紅帽 linux系統 linux指令 linux認證 紅帽linux linux視頻

主題簡介:

  1. HDFS最佳化儲存功能講解
  2. SSM系統架構設計
  3. SSM系統應用場景分析
一、背景

隨著大數據技術相關技術的發展和普及,越來越多的公司開始使用基於開源Hadoop的平台系統,同時,越來越多的業務和應用也從傳統的技術架構遷移到大數據平台上。在典型的Hadoop大數據平台中,人們使用HDFS作為儲存服務的核心。

而在大數據發展之初,最主要的應用場景仍然是離線批次場景,對儲存的需求追求的是吞吐量,HDFS正是針對這樣的場景而設計的,而隨著技術不斷的發展,越來越多的場景會對儲存提出新的需求,HDFS也面臨新的挑戰。主要包括幾個面向:

1、資料量問題

#一方面隨著業務的成長和新的應用接入,會為HDFS帶來更多的數據,另一方面隨著深度學習,人工智慧等技術的發展,用戶通常希望能保存更長時間的數據,以提升深度學習的效果。資料量的快速增加會使叢集持續面臨擴容需求,進而導致儲存成本不斷增加。

2、小檔案問題

#眾所周知,HDFS的設計是針對離線批次大檔案的,處理小檔案並非傳統HDFS擅長的場景。 HDFS小檔案問題的根源在於檔案的元資料資訊都是維護在單點Namenode的記憶體中,單一機器的記憶體空間始終是有限的。據估算,單台namenode集群能容納系統檔案數量極限約在1.5億左右。實際上,HDFS平台通常作為底層儲存平台服務於上層多種運算框架,多個業務場景,所以小檔案問題從業務的角度也難以避免。目前也有方案例如HDFS-Federation解決Namenode單點擴充性問題,但同時也會帶來巨大的維運管理難度。

3、冷熱資料問題

隨著資料量的不斷增長積累,數據也會呈現出訪問熱度不同的巨大差異。例如一個平台會不斷寫入最新的數據,但通常最近寫入的數據存取頻率會比很久之前的數據高很多。如果無論資料冷熱情況,都採用同樣的儲存策略,是對叢集資源的一種浪費。 如何根據資料冷熱程度對HDFS儲存系統進行最佳化是亟待解決的問題。

二、現有HDFS最佳化技術

從Hadoop誕生到今天也有超過10年的時間,在此期間HDFS技術本身也在不斷優化演進。 HDFS現有一些技術能夠一定程度上解決上述一些問題。這裡簡單介紹一下HDFS異質儲存和HDFS糾刪碼技術。

HDFS異質儲存:

Hadoop從2.6.0版本開始支援異質儲存功能。我們知道HDFS預設的儲存策略,對於每個資料塊,採用三個副本的儲存方式,並保存在不同節點的磁碟上。異質儲存的功能在於利用伺服器不同類型的儲存介質(包括HDD硬碟、SSD、記憶體等)提供更多的儲存策略(例如三個副本一個保存在SSD介質,剩下兩個仍然保存在HDD硬碟) ,從而使得HDFS的儲存能夠更靈活高效地應對各種應用場景。

HDFS中預先定義支援的各種儲存包括:

  • ARCHIVE:高儲存密度但耗電較少的儲存介質,例如磁帶,通常用來儲存冷資料

  • DISK:磁碟介質,這是HDFS最早支援的儲存介質

  • SSD:固態硬碟,是一種新型儲存介質,目前被不少網路公司使用

  • RAM_DISK :資料被寫入記憶體中,同時會往該儲存媒體中再(非同步)寫一份

優化HDFS資料存取效率:利用資料熱度與冷熱度進行管理

#HDFS中支援的儲存策略包括:

  1. Lazy_persist:一個副本儲存在記憶體RAM_DISK中,其餘副本儲存在磁碟中

  2. ALL_SSD:所有副本都保存在SSD中

  3. One_SSD:一個副本保存在SSD中,其餘副本保存在磁碟中

  4. Hot:所有副本都保存在磁碟中,這也是預設的儲存策略

  5. Warm:一個副本保存在磁碟上,其餘副本保存在歸檔儲存上

  6. Cold:所有副本都保存在歸檔儲存上

整體上HDFS異質儲存的價值在於,根據資料熱度採用不同策略從而提升叢集整體資源使用效率。對於頻繁存取的數據,將其全部或部分保存在更高存取效能的儲存媒體(記憶體或SSD)上,提升其讀寫效能;對於幾乎不會存取的數據,保存在歸檔儲存媒體上,降低其儲存成本。但是HDFS異質儲存的配置需要使用者對目錄指定對應的策略,也就是使用者需要預先知道每個目錄下的檔案的存取熱度,在實際大數據平台的應用中,這是比較困難的一點。

HDFS糾刪碼:

傳統HDFS數據採用三副本機制保證數據的可靠性,即每存儲1TB數據,實際在集群各節點上佔用的數據達到3TB,額外開銷為200%。這給節點磁碟儲存和網路傳輸帶來了很大的壓力。

在Hadoop3.0開始引入支援HDFS檔案區塊層級的糾刪碼,底層採用Reed-Solomon(k,m)演算法。 RS是常用的糾刪碼演算法,透過矩陣運算,可以為k位資料產生m位校驗位,根據k和m的取值不同,可以實現不同程度的容錯能力,是一種比較靈活的糾刪碼演算法。

優化HDFS資料存取效率:利用資料熱度與冷熱度進行管理

#常見的演算法為RS(3,2)、RS(6,3)、RS(10,4),k個檔案區塊和m個校驗區塊構成一個群組,這個群組內可以容忍任意m個資料塊的遺失。

HDFS糾刪碼技術能夠降低資料儲存的冗餘度,以RS(3,2)為例,其資料冗餘度為67%,相比Hadoop預設的200%大為減少。但是糾刪碼技術儲存資料和資料復原都需要消耗cpu進行運算,其實是一種以時間換空間的選擇,因此比較適用的場景是冷資料的儲存。冷資料儲存的資料往往一次寫入之後長時間沒有訪問,這種情況下可以透過糾刪碼技術減少副本數。

三、大數據儲存最佳化:SSM

前面介紹的無論HDFS異質儲存或糾刪碼技術,前提都是需要使用者對特定的資料指定儲存的行為,就是說使用者需要知道哪些資料是熱點數據,哪些是冷資料。那有沒有一種方法可以自動對儲存進行最佳化呢?

答案是有的,這裡介紹的SSM(Smart Storage Management)系統,它從底層存儲(通常是HDFS)中獲取元數據信息,並通過數據讀寫訪問信息分析獲取數據熱度情況,針對不同熱度的數據,依照預先制定的一系列規則,採用相應的儲存最佳化策略,從而提升整個儲存系統的效率。 SSM是一個由Intel主導的開源的項目,中國移動也參與其中的研發,專案可以在Github中取得:https://github.com/Intel-bigdata/SSM 。

SSM定位是一個儲存外圍最佳化的系統,整體上採用Server-Agent-Client的架構,其中Server負責SSM整體邏輯的實現,Agent用於對儲存叢集執行各種操作,Client是提供給使用者的資料存取接口,通常其中包含了原生HDFS的接口。

優化HDFS資料存取效率:利用資料熱度與冷熱度進行管理

#SSM-Server的主要框架如上圖所示,從上到下,StatesManager與HDFS集群進行交互,用於獲取HDFS元數據信息,並維護每個文件的訪問熱度信息。 StatesManager中的資訊會持久化到關係型資料庫中。在SSM中採用TiDB作為底層儲存的資料庫。 RuleManager維護和管理規則相關訊息,使用者透過前台介面為SSM定義一系列儲存規則,RuleManger負責規則的解析和執行。 CacheManager/StorageManager根據熱度和規則,產生具體的action任務。 ActionExecutor 負責具體的action任務,把任務分配給Agent,並在Agent節點上執行。

優化HDFS資料存取效率:利用資料熱度與冷熱度進行管理

#SSM-Server內部邏輯實作依賴規則的定義,需要管理員透過前台web頁面為SSM系統制定一系列規則。一條規則包括幾部分組成:

  • 操作對象,通常是指符合特定條件的文件。
  • 觸發器,指規則觸發的時間點,例如每天定時觸發。
  • 執行條件,定義一系列基於熱度的條件,例如檔案在一段時間存取次數計數要求。
  • 執行操作,對符合執行條件的資料進行相關操作,通常是指定其儲存策略等。

一個實際的規則範例:

file.path matchs ”/foo/*”: accessCount(10min) >= 3 | one-ssd

這條規則表示對於在/foo目錄下的文件,滿足10分鐘內被訪問次數不低於三次,則對其採用One-SSD的存儲策略,即數據一個副本保存在SSD上,剩餘2個副本保存在普通磁碟上。

四、SSM應用程式場景

SSM能夠針對資料的冷熱程度,採用不同儲存策略進行最佳化,以下是一些典型的應用場景:

優化HDFS資料存取效率:利用資料熱度與冷熱度進行管理

#最典型的場景就是針對冷數據,如上圖所示,定義相關規則,將較長時間為沒有存取的資料採用更低成本的儲存。例如原先的資料塊,從SSD儲存退化到HDD儲存。

優化HDFS資料存取效率:利用資料熱度與冷熱度進行管理

#與此類似,對於熱點的數據,同樣可以根據不同的規則,對其採用更快速的存儲策略,如上圖所示,短時間內訪問此處較多的熱點數據,會從HDD存儲上升至SSD存儲,更熱點的數據會採用內存存儲的策略。

優化HDFS資料存取效率:利用資料熱度與冷熱度進行管理

#針對冷數據的場景,SSM也可以採用糾刪碼的優化,透過定義相應規則,對於訪問次數很少的冷數據,對其執行erasure code操作,降低數據副本冗餘。

優化HDFS資料存取效率:利用資料熱度與冷熱度進行管理

另外值得一提的是SSM針對小檔案也有對應最佳化手段,這個功能仍處於開發過程中。大體邏輯是SSM會對HDFS上一系列小檔案執行合併成大檔案的操作,同時,在SSM的元資料中記錄下原始小檔案和合併後大檔案的映射關係以及每個小檔案在大檔案中的偏移量。當使用者需要存取小檔案時,透過SSM特定的客戶端(SmartClient),根據SSM元資料中的小檔案映射訊息,從合併後的檔案中取得到原始小檔案。

最後SSM是個開源的項目,目前仍在非常快速的迭代演進過程中,歡迎任何有興趣的朋友參與專案的開發貢獻。

Q&A

#Q1:HDFS自行搭建應該從多大規模開始?

A1:HDFS支援偽分佈模式,即使只有一個節點,也能建構一個HDFS系統。如果希望更能體驗和理解HDFS的分散式架構,建議有3到5個節點的環境可以搭建。

Q2:蘇研在實際各省的大數據平台用SSM了嗎?

A2:目前還沒有,這個專案還在快速發展中,需要等到測試穩定後才會逐步用到生產上。

Q3:HDFS和Spark差別是什麼?優缺點呢?

A3:HDFS和Spark並不是同一個層次的技術,HDFS是儲存系統,而Spark是一種運算引擎。我們常拿來和Spark對標的是Hadoop中的Mapreduce計算框架而非HDFS儲存系統。在實際專案建置中,通常HDFS和Spark是協作的關係,底層儲存使用HDFS,上層計算使用Spark。

以上是優化HDFS資料存取效率:利用資料熱度與冷熱度進行管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

vscode需要什麼電腦配置 vscode需要什麼電腦配置 Apr 15, 2025 pm 09:48 PM

VS Code 系統要求:操作系統:Windows 10 及以上、macOS 10.12 及以上、Linux 發行版處理器:最低 1.6 GHz,推薦 2.0 GHz 及以上內存:最低 512 MB,推薦 4 GB 及以上存儲空間:最低 250 MB,推薦 1 GB 及以上其他要求:穩定網絡連接,Xorg/Wayland(Linux)

Linux體系結構:揭示5個基本組件 Linux體系結構:揭示5個基本組件 Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

vscode終端使用教程 vscode終端使用教程 Apr 15, 2025 pm 10:09 PM

vscode 內置終端是一個開發工具,允許在編輯器內運行命令和腳本,以簡化開發流程。如何使用 vscode 終端:通過快捷鍵 (Ctrl/Cmd ) 打開終端。輸入命令或運行腳本。使用熱鍵 (如 Ctrl L 清除終端)。更改工作目錄 (如 cd 命令)。高級功能包括調試模式、代碼片段自動補全和交互式命令歷史。

git怎麼查看倉庫地址 git怎麼查看倉庫地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

notepad怎麼運行java代碼 notepad怎麼運行java代碼 Apr 16, 2025 pm 07:39 PM

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

Linux的主要目的是什麼? Linux的主要目的是什麼? Apr 16, 2025 am 12:19 AM

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

vscode終端命令不能用 vscode終端命令不能用 Apr 15, 2025 pm 10:03 PM

VS Code 終端命令無法使用的原因及解決辦法:未安裝必要的工具(Windows:WSL;macOS:Xcode 命令行工具)路徑配置錯誤(添加可執行文件到 PATH 環境變量中)權限問題(以管理員身份運行 VS Code)防火牆或代理限制(檢查設置,解除限制)終端設置不正確(啟用使用外部終端)VS Code 安裝損壞(重新安裝或更新)終端配置不兼容(嘗試不同的終端類型或命令)特定環境變量缺失(設置必要的環境變量)

See all articles