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

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

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

主題簡介:

  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中文網其他相關文章!

陳述
本文轉載於:Linux就该这么学。如有侵權,請聯絡admin@php.cn刪除
Linux系統管理員的主要任務是什麼?Linux系統管理員的主要任務是什麼?Apr 19, 2025 am 12:23 AM

Linux系統管理員的主要任務包括系統監控與性能調優、用戶管理、軟件包管理、安全管理與備份、故障排查與解決、性能優化與最佳實踐。 1.使用top、htop等工具監控系統性能,並進行調優。 2.通過useradd等命令管理用戶賬戶和權限。 3.利用apt、yum管理軟件包,確保系統更新和安全。 4.配置防火牆、監控日誌、進行數據備份以確保系統安全。 5.通過日誌分析和工具使用進行故障排查和解決。 6.優化內核參數和應用配置,遵循最佳實踐提升系統性能和穩定性。

很難學習Linux嗎?很難學習Linux嗎?Apr 18, 2025 am 12:23 AM

學習Linux並不難。 1.Linux是一個開源操作系統,基於Unix,廣泛應用於服務器、嵌入式系統和個人電腦。 2.理解文件系統和權限管理是關鍵,文件系統是層次化的,權限包括讀、寫和執行。 3.包管理系統如apt和dnf使得軟件管理方便。 4.進程管理通過ps和top命令實現。 5.從基本命令如mkdir、cd、touch和nano開始學習,再嘗試高級用法如shell腳本和文本處理。 6.常見錯誤如權限問題可以通過sudo和chmod解決。 7.性能優化建議包括使用htop監控資源、清理不必要文件和使用sy

Linux管理員的薪水是多少?Linux管理員的薪水是多少?Apr 17, 2025 am 12:24 AM

Linux管理員的平均年薪在美國為75,000至95,000美元,歐洲為40,000至60,000歐元。提升薪資可以通過:1.持續學習新技術,如雲計算和容器技術;2.積累項目經驗並建立Portfolio;3.建立職業網絡,拓展人脈。

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

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

互聯網在Linux上運行嗎?互聯網在Linux上運行嗎?Apr 14, 2025 am 12:03 AM

互聯網運行不依賴單一操作系統,但Linux在其中扮演重要角色。 Linux廣泛應用於服務器和網絡設備,因其穩定性、安全性和可擴展性受歡迎。

Linux操作是什麼?Linux操作是什麼?Apr 13, 2025 am 12:20 AM

Linux操作系統的核心是其命令行界面,通過命令行可以執行各種操作。 1.文件和目錄操作使用ls、cd、mkdir、rm等命令管理文件和目錄。 2.用戶和權限管理通過useradd、passwd、chmod等命令確保系統安全和資源分配。 3.進程管理使用ps、kill等命令監控和控制系統進程。 4.網絡操作包括ping、ifconfig、ssh等命令配置和管理網絡連接。 5.系統監控和維護通過top、df、du等命令了解系統運行狀態和資源使用情況。

使用Linux別名提高自定義命令快捷方式的生產率使用Linux別名提高自定義命令快捷方式的生產率Apr 12, 2025 am 11:43 AM

介紹 Linux是一個強大的操作系統,由於其靈活性和效率,開發人員,系統管理員和電源用戶都喜歡。但是,經常使用長而復雜的命令可能是乏味的

Linux實際上有什麼好處?Linux實際上有什麼好處?Apr 12, 2025 am 12:20 AM

Linux適用於服務器、開發環境和嵌入式系統。 1.作為服務器操作系統,Linux穩定高效,常用於部署高並發應用。 2.作為開發環境,Linux提供高效的命令行工具和包管理系統,提升開發效率。 3.在嵌入式系統中,Linux輕量且可定制,適合資源有限的環境。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

記事本++7.3.1

記事本++7.3.1

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

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具