英特爾® 傲騰? 持久內(nèi)存是Intel在2019年發(fā)布的一款革命性的產(chǎn)品,英特爾® 傲騰? 持久內(nèi)存是一種全新的內(nèi)存類型,其架構(gòu)設(shè)計(jì)旨在從數(shù)據(jù)中心中汲取更多價(jià)值,重構(gòu)數(shù)據(jù)中心內(nèi)存/存儲(chǔ)層次結(jié)構(gòu)。不同于傳統(tǒng)的DRAM,英特爾® 傲騰? 持久內(nèi)存集大容量、經(jīng)濟(jì)性和持久性于一身,能夠支持?jǐn)?shù)據(jù)中心多個(gè)應(yīng)用場(chǎng)景。浪潮基于英特爾® 傲騰? 持久內(nèi)存做了大量的應(yīng)用場(chǎng)景解決方案,覆蓋大數(shù)據(jù)分析、數(shù)據(jù)庫(kù)、云與虛擬化、分布式存儲(chǔ)等應(yīng)用場(chǎng)景。為了幫助用戶通過(guò)更加靈活的架構(gòu)來(lái)實(shí)現(xiàn)創(chuàng)新型的應(yīng)用,助力企業(yè)實(shí)現(xiàn)性能突破,浪潮發(fā)布了基于英特爾® 傲騰? 持久內(nèi)存技術(shù)的HDFS存儲(chǔ)方案。
Hadoop是Apache開(kāi)發(fā)的用于可靠,可擴(kuò)展的分布式計(jì)算的開(kāi)源軟件。其不僅僅在云計(jì)算領(lǐng)域用途廣泛,還可以支撐搜索引擎服務(wù),作為搜索引擎底層的基礎(chǔ)架構(gòu)系統(tǒng),同時(shí)在海量數(shù)據(jù)處理、數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)、科學(xué)計(jì)算等領(lǐng)域都越來(lái)越受到青睞。HDFS(Hadoop Distributed File Sysytem)作為Hadoop提出的分布式文件系統(tǒng),更是因?yàn)槠湓O(shè)計(jì)簡(jiǎn)單、易用性高而被廣泛應(yīng)用。為了幫助企業(yè)化解因?yàn)閿?shù)據(jù)快速增長(zhǎng)所出現(xiàn)的HDFS性能瓶頸,浪潮進(jìn)行了基于英特爾® 傲騰技術(shù)的 HDFS 性能優(yōu)化實(shí)踐,通過(guò)將英特爾® 傲騰? 持久內(nèi)存作為HDFS的集中式緩存,相比于傳統(tǒng)的DRAM內(nèi)存方案,不僅大幅提升了數(shù)據(jù)吞吐性能,而且實(shí)現(xiàn)了更高的成本效益。
挑戰(zhàn):化解HDFS存在的存儲(chǔ)性能瓶頸
HDFS雖然被廣泛應(yīng)用,但是對(duì)于需要頻繁訪問(wèn)文件,或者具有性能SLA(Service-Level Agreement)的混合工作負(fù)載,HDFS仍不能滿足高性能的要求。HDFS引入了集中式緩存管理功能,它是一個(gè)明確的緩存機(jī)制,允許用戶指定要緩存的HDFS路徑。在HDFS緩存的幫助下,高級(jí)應(yīng)用程序可以更輕松地利用群集內(nèi)存框架,例如Spark,MR,Hive,Pig和Impala。為了加快工作量,這些框架可以明確要求HDFS緩存數(shù)據(jù)集并計(jì)劃任務(wù),并考慮DRAM緩存位置。HDFS中NameNode會(huì)和保存著所需數(shù)據(jù)塊的所有DataNode通信,并指導(dǎo)他們把數(shù)據(jù)塊緩存在Off-heap緩存中。
由于HDFS應(yīng)對(duì)的是超大規(guī)模數(shù)據(jù)集的存儲(chǔ)需求,因此數(shù)據(jù)吞吐性能的重要性不言而喻。要提升HDFS數(shù)據(jù)吞吐性能,可以從優(yōu)化內(nèi)存規(guī)劃、存儲(chǔ)磁盤擴(kuò)容和升級(jí)、參數(shù)調(diào)優(yōu)等多個(gè)方面進(jìn)行。以線上HDFS集群內(nèi)存規(guī)劃為例,內(nèi)存由OS,HDFS和其他應(yīng)用程序共享。影響系統(tǒng)內(nèi)存利用率、IO利用率等資源以及讀寫(xiě)性能等,是HDFS性能一個(gè)至關(guān)重要的影響因素。
但是,要想在控制總體擁有成本(TCO)的前提下,對(duì)HDFS集群內(nèi)存進(jìn)行最優(yōu)規(guī)劃并不是一件容易的事情。首先,HDFS集群需要的內(nèi)存容量是海量且不斷擴(kuò)展的,而每一個(gè)存儲(chǔ)節(jié)點(diǎn)的內(nèi)存插槽數(shù)量、支持內(nèi)存容量等條件卻極大限制了其擴(kuò)展性,在內(nèi)存容量增長(zhǎng)到一定程度后就會(huì)出現(xiàn)瓶頸。如果要進(jìn)一步對(duì)于內(nèi)存容量進(jìn)行擴(kuò)展,企業(yè)在傳統(tǒng)上一般會(huì)采取兩種方法,第一種是使用大容量的單條內(nèi)存,第二種方法是擴(kuò)展HDFS存儲(chǔ)節(jié)點(diǎn)。
但是,這兩種方法都不具備良好的成本效益。對(duì)于前者來(lái)說(shuō),雖然很多HDFS存儲(chǔ)節(jié)點(diǎn)支持的單條內(nèi)存容量理論上限是128GB,但是這種大容量的內(nèi)存普遍處于驗(yàn)證階段,可獲得性不足,而且價(jià)格的提升遠(yuǎn)高于其容量的提升,會(huì)帶來(lái)很高的成本壓力;對(duì)于后者來(lái)說(shuō),擴(kuò)展HDFS存儲(chǔ)節(jié)點(diǎn)固然能夠提升內(nèi)存池的容量,但是這些存儲(chǔ)節(jié)點(diǎn)的采購(gòu)、空間占用、運(yùn)維、供電無(wú)疑也會(huì)顯著抬升成本。
因此,如何打破現(xiàn)有存儲(chǔ)架構(gòu)的限制,尋找一種創(chuàng)新的線上HDFS集群內(nèi)存規(guī)劃方法,在顯著提升HDFS性能的同時(shí)有效控制成本,也就顯得至關(guān)重要。
利用英特爾® 傲騰? 持久內(nèi)存技術(shù)優(yōu)化內(nèi)存結(jié)構(gòu)
為了解決此問(wèn)題,浪潮工程師團(tuán)隊(duì)對(duì)于HDFS的集中式緩存管理進(jìn)行了分析,為了減輕內(nèi)存資源的壓力,持久性內(nèi)存(PM)被稱為存儲(chǔ)類內(nèi)存(SCM),在業(yè)界出現(xiàn),它不僅可以為HDFS提供大容量緩存,擺脫單節(jié)點(diǎn)內(nèi)存大小的限制,同時(shí)還能有效降低成本。
要將存儲(chǔ)介質(zhì)從內(nèi)存更換為高性能固態(tài)盤,一個(gè)重要的條件就是固態(tài)盤在IOPS、時(shí)延方面與內(nèi)存不能有太大的差距。在方案驗(yàn)證的過(guò)程中浪潮發(fā)現(xiàn),英特爾® 傲騰? 持久內(nèi)存位于內(nèi)存和存儲(chǔ)介質(zhì)之間(如圖1),能夠填補(bǔ)兩者間的性能和時(shí)延差距,對(duì)存儲(chǔ)層次模型進(jìn)行重新劃分和定義。因此,浪潮決定使用英特爾® 傲騰? 持久內(nèi)存作為HDFS的讀緩存,并進(jìn)行性能、成本等方面的驗(yàn)證。
圖1
英特爾® 傲騰? 持久內(nèi)存是一種全新的內(nèi)存類型,不同于傳統(tǒng)的DRAM,其集大容量、經(jīng)濟(jì)性和持久性于一身,讀寫(xiě)帶寬比NVME設(shè)備高數(shù)倍,并大幅降低延時(shí)問(wèn)題。由于寫(xiě)入方式不同,英特爾® 傲騰? 持久內(nèi)存也比Flash NAND更耐用,并通過(guò)高達(dá)512GB的單模塊容量,實(shí)現(xiàn)了遠(yuǎn)超傳統(tǒng)DRAM的系統(tǒng)內(nèi)存容量。其從根本上改變了數(shù)據(jù)中心的彈性,將內(nèi)存數(shù)據(jù)庫(kù)重啟時(shí)間從以前的幾天、幾小時(shí)縮短到現(xiàn)在的幾分鐘甚至幾秒鐘,并提供經(jīng)濟(jì)實(shí)惠的內(nèi)存空間,將系統(tǒng)內(nèi)存容量擴(kuò)展到前所未有的水平。
英特爾® 傲騰? 持久內(nèi)存擁有兩種特殊的運(yùn)行模式——App Direct 模式和內(nèi)存模式。具體來(lái)看,采用App Direct 模式,經(jīng)過(guò)專門調(diào)試的應(yīng)用程序可以從產(chǎn)品固有的持久性中充分獲取價(jià)值,同時(shí)獲得更大的容量;在內(nèi)存模式下,在受支持的操作系統(tǒng)或虛擬環(huán)境中運(yùn)行的應(yīng)用程序可將該產(chǎn)品用于易失性存儲(chǔ),在無(wú)需重寫(xiě)軟件的情況下,有效利用高達(dá)512GB的內(nèi)存模塊帶來(lái)的附加系統(tǒng)容量,在大型內(nèi)存池中獲得新的洞察。
在實(shí)際的方案部署中,浪潮使用了英特爾® 至強(qiáng)® 第二代可擴(kuò)展處理器與英特爾® 傲騰? 持久內(nèi)存組成強(qiáng)強(qiáng)組合,代替HDFS中DRAM顯示緩存(如圖2),改善HDFS 集群內(nèi)存結(jié)構(gòu),以支撐云、數(shù)據(jù)庫(kù)、高性能計(jì)算、內(nèi)存分析和內(nèi)容分發(fā)網(wǎng)絡(luò)等關(guān)鍵數(shù)據(jù)工作負(fù)載。
圖2
方案驗(yàn)證:英特爾® 傲騰? 持久內(nèi)存性能優(yōu)勢(shì)顯著
為了測(cè)試英特爾® 傲騰? 持久內(nèi)存作為HDFS集中式緩存的性能,浪潮決定在總成本相當(dāng)?shù)那闆r下,分別測(cè)試基于英特爾® 傲騰? 持久內(nèi)存/ DRAM 內(nèi)存兩種配置下的性能對(duì)比。
在實(shí)際測(cè)試中,浪潮將英特爾® 傲騰? 持久內(nèi)存設(shè)置為 App Direct運(yùn)行模式,并依據(jù)以下硬件配置來(lái)搭建了測(cè)試方案(如表1)。測(cè)試使用3臺(tái)服務(wù)器,其中一臺(tái)服務(wù)器用于管理節(jié)點(diǎn),部署HDFS NameNode,另外兩臺(tái)服務(wù)器作為數(shù)據(jù)節(jié)點(diǎn),部署HDFS DataNode。
表1
在至關(guān)重要的存儲(chǔ)方面,英特爾® 傲騰? 持久內(nèi)存方案中每個(gè)數(shù)據(jù)節(jié)點(diǎn)使用192GB(12*16GB)的DRAM,并使用1TB(8*128GB)的英特爾® 傲騰? 持久內(nèi)存作為HDFS的緩存設(shè)備;DRAM方案中使用768GB(24*32GB)內(nèi)存,兩種方案的組網(wǎng)方式如圖3。
圖3
本次進(jìn)行了兩種場(chǎng)景測(cè)試,一種對(duì)HDFS進(jìn)行順序讀和隨機(jī)讀測(cè)試;一種在text和parquet兩種數(shù)據(jù)類型下對(duì)54個(gè)SQL和7個(gè)IO敏感型SQL查詢測(cè)試。AD模型分別來(lái)評(píng)測(cè)HDFS在英特爾® 傲騰? 持久內(nèi)存做緩存、DRAM做緩存和無(wú)緩存下的讀性能。
讀寫(xiě)測(cè)試中,浪潮分別測(cè)試了三種配置在順序讀和隨機(jī)讀下的吞吐量(測(cè)試結(jié)果如圖4)??梢钥闯?,在SequentialRead測(cè)試模型下,英特爾® 傲騰? 持久內(nèi)存是DRAM的3.11倍,英特爾® 傲騰? 持久內(nèi)存是NoCache的11.64倍。在RandomRead測(cè)試模型下,英特爾® 傲騰? 持久內(nèi)存是DRAM的7.95倍,英特爾® 傲騰? 持久內(nèi)存是NoCache的21.33倍。
圖4
SQL查詢測(cè)試中,浪潮分別測(cè)試了三種配置在54個(gè)SQL和7個(gè)IO敏感型SQL下的查詢時(shí)間??梢钥闯觯?4個(gè)SQL查詢測(cè)試模型下(測(cè)試結(jié)果如圖5),對(duì)于text數(shù)據(jù)類型,DRAM是英特爾® 傲騰? 持久內(nèi)存的1.26倍,NoCache是英特爾® 傲騰? 持久內(nèi)存的1.49倍;對(duì)于parquet數(shù)據(jù)類型,DRAM是英特爾® 傲騰? 持久內(nèi)存的1.06倍,NoCache是英特爾® 傲騰? 持久內(nèi)存的1.13倍。在7個(gè)IO敏感SQL查詢測(cè)試模型下(測(cè)試結(jié)果如圖6),對(duì)于text數(shù)據(jù)類型,DRAM是英特爾® 傲騰? 持久內(nèi)存的1.7倍,NoCache是英特爾® 傲騰? 持久內(nèi)存的2.23倍;對(duì)于parquet數(shù)據(jù)類型,DRAM是英特爾® 傲騰? 持久內(nèi)存的1.16倍,nocache是英特爾® 傲騰? 持久內(nèi)存的1.22倍。
圖5
圖6
效果:大幅改善HDFS性能與成本表現(xiàn)
從測(cè)試結(jié)果可以看出,在成本相當(dāng)?shù)那闆r下,通過(guò)將HDFS的讀緩存由傳統(tǒng)的DRAM內(nèi)存替換為英特爾® 傲騰? 持久內(nèi)存,可以成倍提升吞吐性能,大幅降低查詢時(shí)間。之所以會(huì)有如此顯著的提升效果,很大程度上是因?yàn)橛⑻貭?reg; 傲騰? 持久內(nèi)存支持的總?cè)萘窟h(yuǎn)高于DRAM內(nèi)存,能夠緩存HDFS所有的數(shù)據(jù)集,而沒(méi)有緩存驅(qū)逐。而且其極高的隨機(jī)讀性能能夠滿足HDFS隨機(jī)讀需求。
尤為重要的是,如果企業(yè)僅需要達(dá)到固定的性能,那么使用英特爾® 傲騰? 持久內(nèi)存將帶來(lái)極大的成本節(jié)約,這在當(dāng)前企業(yè)數(shù)據(jù)爆發(fā)式增長(zhǎng)、在大數(shù)據(jù)方面的投入逐漸增大的背景下,顯然具有重要意義。