主題簡介:
HDFS優(yōu)化存儲功能講解
SSM系統(tǒng)架構設計
SSM系統(tǒng)應用場景分析
一、背景
隨著大數(shù)據(jù)技術相關技術的發(fā)展和普及,越來越多的公司開始使用基于開源Hadoop的平臺系統(tǒng),同時,越來越多的業(yè)務和應用也在從傳統(tǒng)的技術架構遷移到大數(shù)據(jù)平臺上。在典型的Hadoop大數(shù)據(jù)平臺中,人們使用HDFS作為存儲服務的核心。
而在大數(shù)據(jù)發(fā)展之初,最主要的應用場景仍然是離線批處理場景,對存儲的需求追求的是吞吐量,HDFS正是針對這樣的場景而設計的,而隨著技術不斷的發(fā)展,越來越多的場景會對存儲提出新的需求,HDFS也面臨著新的挑戰(zhàn)。主要包括幾個方面:
1、數(shù)據(jù)量問題
一方面隨著業(yè)務的增長和新的應用接入,會給HDFS帶來更多的數(shù)據(jù),另一方面隨著深度學習,人工智能等技術的發(fā)展,用戶通常希望能保存更長時間的數(shù)據(jù),以提升深度學習的效果。數(shù)據(jù)量的快速增加會使集群不斷面臨擴容需求,從而導致存儲成本不斷增加。
2、小文件問題
眾所周知,HDFS的設計是針對離線批處理大文件的,處理小文件并非傳統(tǒng)HDFS擅長的場景。HDFS小文件問題的根源在于文件的元數(shù)據(jù)信息都是維護在單點Namenode的內(nèi)存中,單臺機器的內(nèi)存空間始終是有限的。據(jù)估算,單臺namenode集群能容納系統(tǒng)文件數(shù)量極限大約在1.5億左右。實際上,HDFS平臺通常作為底層存儲平臺服務于上層多種計算框架,多個業(yè)務場景,所以小文件問題從業(yè)務的角度也難以避免。目前也有方案例如HDFS-Federation解決Namenode單點擴展性問題,但同時也會帶來巨大的運維管理難度。
3、冷熱數(shù)據(jù)問題
隨著數(shù)據(jù)量的不斷增長積累,數(shù)據(jù)也會呈現(xiàn)出訪問熱度不同的巨大差異。例如一個平臺會不斷地寫入最新的數(shù)據(jù),但通常情況下最近寫入的數(shù)據(jù)訪問頻率會比很久之前的數(shù)據(jù)高很多。如果無論數(shù)據(jù)冷熱情況,都采用同樣的存儲策略,是對集群資源的一種浪費。如何根據(jù)數(shù)據(jù)冷熱程度對HDFS存儲系統(tǒng)進行優(yōu)化是一個亟待解決的問題。
二、現(xiàn)有HDFS優(yōu)化技術
從Hadoop誕生到今天也有超過10年的時間,在此期間HDFS技術本身也在不斷優(yōu)化演進。HDFS現(xiàn)有一些技術能夠一定程度上解決上述一些問題。這里簡要介紹一下HDFS異構存儲和HDFS糾刪碼技術。
HDFS異構存儲:
Hadoop從2.6.0版本開始支持異構存儲功能。我們知道HDFS默認的存儲策略,對于每個數(shù)據(jù)塊,采用三個副本的存儲方式,保存在不同節(jié)點的磁盤上。異構存儲的作用在于利用服務器不同類型的存儲介質(包括HDD硬盤、SSD、內(nèi)存等)提供更多的存儲策略(例如三個副本一個保存在SSD介質,剩下兩個仍然保存在HDD硬盤),從而使得HDFS的存儲能夠更靈活高效地應對各種應用場景。
HDFS中預定義支持的各種存儲包括:
ARCHIVE:高存儲密度但耗電較少的存儲介質,例如磁帶,通常用來存儲冷數(shù)據(jù)
DISK:磁盤介質,這是HDFS最早支持的存儲介質
SSD:固態(tài)硬盤,是一種新型存儲介質,目前被不少互聯(lián)網(wǎng)公司使用
RAM_DISK :數(shù)據(jù)被寫入內(nèi)存中,同時會往該存儲介質中再(異步)寫一份
HDFS中支持的存儲策略包括:
Lazy_persist:一個副本保存在內(nèi)存RAM_DISK中,其余副本保存在磁盤中
ALL_SSD:所有副本都保存在SSD中
One_SSD:一個副本保存在SSD中,其余副本保存在磁盤中
Hot:所有副本保存在磁盤中,這也是默認的存儲策略
Warm:一個副本保存在磁盤上,其余副本保存在歸檔存儲上
Cold:所有副本都保存在歸檔存儲上
總體上HDFS異構存儲的價值在于,根據(jù)數(shù)據(jù)熱度采用不同策略從而提升集群整體資源使用效率。對于頻繁訪問的數(shù)據(jù),將其全部或部分保存在更高訪問性能的存儲介質(內(nèi)存或SSD)上,提升其讀寫性能;對于幾乎不會訪問的數(shù)據(jù),保存在歸檔存儲介質上,降低其存儲成本。但是HDFS異構存儲的配置需要用戶對目錄指定相應的策略,即用戶需要預先知道每個目錄下的文件的訪問熱度,在實際大數(shù)據(jù)平臺的應用中,這是比較困難的一點。
HDFS糾刪碼:
傳統(tǒng)HDFS數(shù)據(jù)采用三副本機制保證數(shù)據(jù)的可靠性,即每存儲1TB數(shù)據(jù),實際在集群各節(jié)點上占用的數(shù)據(jù)達到3TB,額外開銷為200%。這給節(jié)點磁盤存儲和網(wǎng)絡傳輸帶來了很大的壓力。
在Hadoop3.0開始引入支持HDFS文件塊級別的糾刪碼,底層采用Reed-Solomon(k,m)算法。RS是一種常用的糾刪碼算法,通過矩陣運算,可以為k位數(shù)據(jù)生成m位校驗位,根據(jù)k和m的取值不同,可以實現(xiàn)不同程度的容錯能力,是一種比較靈活的糾刪碼算法。
常見的算法為RS(3,2)、RS(6,3)、RS(10,4),k個文件塊和m個校驗塊構成一個組,這個組內(nèi)可以容忍任意m個數(shù)據(jù)塊的丟失。
HDFS糾刪碼技術能夠降低數(shù)據(jù)存儲的冗余度,以RS(3,2)為例,其數(shù)據(jù)冗余度為67%,相比Hadoop默認的200%大為減少。但是糾刪碼技術存儲數(shù)據(jù)和數(shù)據(jù)恢復都需要消耗cpu進行計算,實際上是一種以時間換空間的選擇,因此比較適用的場景是對冷數(shù)據(jù)的存儲。冷數(shù)據(jù)存儲的數(shù)據(jù)往往一次寫入之后長時間沒有訪問,這種情況下可以通過糾刪碼技術減少副本數(shù)。
三、大數(shù)據(jù)存儲優(yōu)化:SSM
前面介紹的無論HDFS異構存儲還是糾刪碼技術,前提都是需要用戶對特定的數(shù)據(jù)指定存儲的行為,就是說用戶需要知道哪些數(shù)據(jù)是熱點數(shù)據(jù),哪些是冷數(shù)據(jù)。那有沒有一種方法可以自動對存儲進行優(yōu)化呢?
答案是有的,這里介紹的SSM(Smart Storage Management)系統(tǒng),它從底層存儲(通常是HDFS)中獲取元數(shù)據(jù)信息,并通過數(shù)據(jù)讀寫訪問信息分析獲取數(shù)據(jù)熱度情況,針對不同熱度的數(shù)據(jù),按照預先制定的一系列規(guī)則,采用相應的存儲優(yōu)化策略,從而提升整個存儲系統(tǒng)的效率。SSM是一個由Intel主導的開源的項目,中國移動也參與其中的研發(fā),項目可以在Github中獲取到:https://github.com/Intel-bigdata/SSM 。
SSM定位是一個存儲外圍優(yōu)化的系統(tǒng),整體上采用Server-Agent-Client的架構,其中Server負責SSM整體邏輯的實現(xiàn),Agent用于對存儲集群執(zhí)行各種操作,Client是提供給用戶的數(shù)據(jù)訪問接口,通常其中包含了原生HDFS的接口。
SSM-Server的主要框架如上圖所示,從上到下,StatesManager與HDFS集群進行交互,用于獲取HDFS元數(shù)據(jù)信息,并維護每個文件的訪問熱度信息。StatesManager中的信息會持久化到關系型數(shù)據(jù)庫中。在SSM中采用TiDB作為底層存儲的數(shù)據(jù)庫。RuleManager維護和管理規(guī)則相關信息,用戶通過前臺界面為SSM定義一系列存儲規(guī)則,RuleManger負責規(guī)則的解析和執(zhí)行。CacheManager/StorageManager根據(jù)熱度和規(guī)則,生成具體的action任務。ActionExecutor 負責具體的action任務,把任務分配給Agent,并在Agent節(jié)點執(zhí)行。
SSM-Server內(nèi)部邏輯實現(xiàn)依賴于規(guī)則的定義,需要管理員通過前臺web頁面為SSM系統(tǒng)制定一系列規(guī)則。一條規(guī)則包括幾部分組成:
操作對象,通常是指符合特定條件的文件。
觸發(fā)器,指規(guī)則觸發(fā)的時間點,例如每天定時觸發(fā)。
執(zhí)行條件,定義一系列基于熱度的條件,例如文件在一段時間訪問次數(shù)計數(shù)要求。
執(zhí)行操作,對符合執(zhí)行條件的數(shù)據(jù)進行相關操作,通常是指定其存儲策略等。
一個實際的規(guī)則示例:
file.path matchs ”/foo/*”: accessCount(10min) >= 3 | one-ssd
這條規(guī)則表示對于在/foo目錄下的文件,滿足10分鐘內(nèi)被訪問次數(shù)不低于三次,則對其采用One-SSD的存儲策略,即數(shù)據(jù)一個副本保存在SSD上,剩余2個副本保存在普通磁盤上。
四、SSM應用場景
SSM能夠針對數(shù)據(jù)的冷熱程度,采用不同存儲策略進行優(yōu)化,以下是一些典型的應用場景:
最典型的場景就是針對冷數(shù)據(jù),如上圖所示,定義相關規(guī)則,將較長時間為沒有訪問的數(shù)據(jù)采用更低成本的存儲。例如原先的數(shù)據(jù)塊,從SSD存儲退化到HDD存儲。
與此類似,對于熱點的數(shù)據(jù),同樣可以根據(jù)不同的規(guī)則,對其采用更快速的存儲策略,如上圖所示,短時間內(nèi)訪問此處較多的熱點數(shù)據(jù),會從HDD存儲上升至SSD存儲,更熱點的數(shù)據(jù)會采用內(nèi)存存儲的策略。
針對冷數(shù)據(jù)的場景,SSM也可以采用糾刪碼的優(yōu)化,通過定義相應規(guī)則,對于訪問次數(shù)很少的冷數(shù)據(jù),對其執(zhí)行erasure code操作,降低數(shù)據(jù)副本冗余。
另外值得一提的是SSM針對小文件也有相應優(yōu)化手段,這個功能仍然處于開發(fā)過程中。大體邏輯是SSM會對HDFS上一系列小文件執(zhí)行合并成大文件的操作,同時,在SSM的元數(shù)據(jù)中記錄下原始小文件和合并后大文件的映射關系以及每個小文件在大文件中的偏移量。當用戶需要訪問小文件時,通過SSM特定的客戶端(SmartClient),根據(jù)SSM元數(shù)據(jù)中的小文件映射信息,從合并后的文件中獲取到原始小文件。
最后SSM是個開源的項目,目前仍然在非?焖俚牡葸M過程中,歡迎任何感興趣的朋友參與項目的開發(fā)貢獻。
Q&A
Q1:HDFS自行搭建應該從多大規(guī)模開始?
A1:HDFS支持偽分布模式,即使只有一個節(jié)點,也能搭建一個HDFS系統(tǒng)。如果希望更好體驗和理解HDFS的分布式架構,建議有3到5個節(jié)點的環(huán)境來搭建。
Q2:蘇研在實際各省的大數(shù)據(jù)平臺用SSM了嗎?
A2:目前還沒有,這個項目還在快速發(fā)展中,需要等到測試穩(wěn)定后才會逐步用到生產(chǎn)上。
Q3:HDFS和Spark區(qū)別是什么?優(yōu)缺點呢?
A3:HDFS和Spark并不是同一個層面上的技術,HDFS是存儲系統(tǒng),而Spark是一種計算引擎。我們經(jīng)常拿來和Spark對標的是Hadoop中的Mapreduce計算框架而非HDFS存儲系統(tǒng)。在實際項目建設中,通常HDFS和Spark是協(xié)作的關系,底層存儲使用HDFS,上層計算使用Spark。
核心關注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務領域、行業(yè)應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業(yè)務領域的管理,全面涵蓋了企業(yè)關注ERP管理系統(tǒng)的核心領域,是眾多中小企業(yè)信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標題:如何根據(jù)數(shù)據(jù)冷熱程度分層存儲,讓HDFS更高效?
本文網(wǎng)址:http://www.ezxoed.cn/html/support/11121521364.html