英特爾® 傲騰?持久內(nèi)存是Intel在2019年發(fā)布的一款革命性的產(chǎn)品,英特爾® 傲騰?持久內(nèi)存是一種全新的內(nèi)存類(lè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)景。為了幫助用戶(hù)通過(guò)更加靈活的架構(gòu)來(lái)實(shí)現(xiàn)創(chuàng)新型的應(yīng)用,助力企業(yè)實(shí)現(xiàn)性能突破,浪潮發(fā)布了基于英特爾® 傲騰? 持久內(nèi)存技術(shù)的HBase應(yīng)用方案。
HBase是一個(gè)高可靠、高性能、面向列、可伸縮的分布式數(shù)據(jù)庫(kù),該技術(shù)來(lái)源于Fay Chang所撰寫(xiě)的Google論文"Bigtable:一個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng)"。就像Bigtable利用了Google文件系統(tǒng)(File System)所提供的分布式數(shù)據(jù)存儲(chǔ)一樣,HBase在Hadoop之上提供了類(lèi)似于Bigtable的能力。HBase是Apache的Hadoop項(xiàng)目的子項(xiàng)目。HBase不同于一般的關(guān)系數(shù)據(jù)庫(kù),它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的列式數(shù)據(jù)庫(kù)。HBase與HDFS相比兩者都具有良好的容錯(cuò)性和擴(kuò)展性,都可以擴(kuò)展到成百上千個(gè)節(jié)點(diǎn)。在需要實(shí)時(shí)讀寫(xiě)、隨機(jī)訪(fǎng)問(wèn)超大規(guī)模數(shù)據(jù)集時(shí),可以使用HBase。
HBase中內(nèi)存規(guī)劃直接涉及讀緩存BlockCache、寫(xiě)緩存MemStore,影響系統(tǒng)內(nèi)存利用率、IO利用率等資源以及讀寫(xiě)性能等,重要性不言而喻。目前很多用戶(hù)由于內(nèi)存資源有限,而導(dǎo)致HBase使用出現(xiàn)嚴(yán)重的性能瓶頸。
利用英特爾® 傲騰? 持久內(nèi)存改善HBase服務(wù)能力
在現(xiàn)有存儲(chǔ)架構(gòu)中,內(nèi)存和存儲(chǔ)介質(zhì)之間存在容量、性能和時(shí)延的差距,基于英特爾® 傲騰?持久內(nèi)存技術(shù)的Persistent Memory位于內(nèi)存和存儲(chǔ)介質(zhì)之間,能夠填補(bǔ)兩者間的性能和時(shí)延差距,對(duì)存儲(chǔ)層次模型進(jìn)行重新劃分和定義。英特爾® 傲騰? 持久內(nèi)存為HBase的讀緩存提供了新的選擇。
英特爾® 傲騰?持久內(nèi)存是一種全新的內(nèi)存類(lè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)景,包括數(shù)據(jù)分析、數(shù)據(jù)庫(kù)和內(nèi)存數(shù)據(jù)庫(kù)、人工智能、高容量虛擬機(jī)、容器,以及內(nèi)容分發(fā)網(wǎng)絡(luò)等,使之在性能、可用性上有大幅度提升。英特爾® 傲騰?持久內(nèi)存技術(shù)從根本上改變了數(shù)據(jù)中心的彈性,將內(nèi)存數(shù)據(jù)庫(kù)重啟時(shí)間從以前的幾天、幾小時(shí)縮短到現(xiàn)在的幾分鐘甚至幾秒鐘,并提供經(jīng)濟(jì)實(shí)惠的內(nèi)存空間,將系統(tǒng)內(nèi)存容量擴(kuò)展到前所未有的水平。
圖一
在現(xiàn)有存儲(chǔ)架構(gòu)中,內(nèi)存和存儲(chǔ)介質(zhì)之間存在容量、性能和時(shí)延的差距,英特爾® 傲騰? 持久內(nèi)存位于內(nèi)存和存儲(chǔ)介質(zhì)之間,能填補(bǔ)兩者間的性能和時(shí)延差距,對(duì)存儲(chǔ)層次模型進(jìn)行重新劃分和定義。英特爾® 傲騰? 持久內(nèi)存讀寫(xiě)帶寬比NVME設(shè)備高數(shù)倍,并大幅降低延時(shí)問(wèn)題。另外,由于寫(xiě)入方式不同,英特爾® 傲騰? 持久內(nèi)存也比Flash NAND更耐用,并能支持比傳統(tǒng)DRAM更大容量的系統(tǒng)內(nèi)存配置。與傳統(tǒng)DRAM不同,英特爾® 傲騰? 持久內(nèi)存將提供前所未有的高容量,經(jīng)濟(jì)性和持久性組合。通過(guò)擴(kuò)展經(jīng)濟(jì)實(shí)惠的系統(tǒng)內(nèi)存容量(每個(gè)CPU Socket大于3 TB),最終客戶(hù)可以使用支持這種新型內(nèi)存的系統(tǒng),通過(guò)在處理器附近移動(dòng)和維護(hù)更大量的數(shù)據(jù)來(lái)更好地優(yōu)化其工作負(fù)載,并極大限度地降低延遲從系統(tǒng)存儲(chǔ)中獲取數(shù)據(jù)。英特爾® 傲騰? 持久內(nèi)存將以每個(gè)模塊高達(dá)512GB的容量提供。同時(shí),英特爾® 傲騰? 持久內(nèi)存具有的非易失性這一大優(yōu)勢(shì)能夠保證數(shù)據(jù)在掉電后或系統(tǒng)維護(hù)中不會(huì)丟失。
圖二
英特爾® 傲騰? 持久內(nèi)存通過(guò)兩種特殊的運(yùn)行模式——App Direct模式和內(nèi)存模式,展現(xiàn)其獨(dú)特的能力。具體來(lái)看,采用App Direct模式,經(jīng)過(guò)專(zhuān)門(mén)調(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ù)據(jù)時(shí)代,新一代數(shù)據(jù)中心對(duì)于加快數(shù)據(jù)的流動(dòng),提高數(shù)據(jù)的存儲(chǔ)和處理能力提出了更高的要求。在這種情況下,英特爾新一代至強(qiáng)可擴(kuò)展CascadeLake處理器與英特爾® 傲騰? 持久內(nèi)存成了新的強(qiáng)強(qiáng)組合。這一組合將改變?cè)?、?shù)據(jù)庫(kù)、高性能計(jì)算、內(nèi)存分析和內(nèi)容分發(fā)網(wǎng)絡(luò)等關(guān)鍵數(shù)據(jù)工作負(fù)載,成為新的動(dòng)力之源。
對(duì)于HBase讀緩存BlockCache,有兩種工作模式:LRUBlockCache和BucketCache。BucketCache可以看成是對(duì)SlabCache思想在實(shí)現(xiàn)上的一種改進(jìn)及功能擴(kuò)展,其優(yōu)點(diǎn)是解決LruBlockCache的缺點(diǎn)(FullGC和碎片化)及支持面向高性能讀的大緩存空間,緩存Block的存儲(chǔ)介質(zhì)不再僅僅依賴(lài)在內(nèi)存上,而是可以選擇為高性能SSD等高速磁盤(pán),我們稱(chēng)之為二級(jí)緩存。這樣BucketCache既可以為HBase提供大容量緩存,同時(shí)又可以擺脫單節(jié)點(diǎn)內(nèi)存大小的限制,降低成本。
HBase使用基于高性能SSD等高速磁盤(pán)作為讀緩存,可在不顯著增加存儲(chǔ)基礎(chǔ)架構(gòu)成本的情況下大幅提高HBase性能。由于絕大多數(shù)讀取緩存訪(fǎng)問(wèn)都是小型隨機(jī)請(qǐng)求,因此使用具有出色隨機(jī)IOPS性能的英特爾® 傲騰? 持久內(nèi)存解決方案至關(guān)重要。
為了測(cè)試英特爾持久內(nèi)存作為BucketCache讀緩存的優(yōu)勢(shì),HBase使用intel開(kāi)發(fā)的同時(shí)支持HBase3.0的PMEM模塊,在相同成本下,8塊HDD盤(pán)作為HDFS數(shù)據(jù)盤(pán),英特爾® 傲騰? 持久內(nèi)存作為HBase BucketCache讀緩存進(jìn)行了基準(zhǔn)測(cè)試, DRAM作為HBase BucketCache讀緩存進(jìn)行基準(zhǔn)測(cè)試作為對(duì)比。其中英特爾® 傲騰? 持久內(nèi)存采用App Director模式。
方案驗(yàn)證
下表列出了兩種測(cè)試方案的硬件配置。
測(cè)試使用4臺(tái)服務(wù)器,一臺(tái)服務(wù)器用于管理節(jié)點(diǎn),部署HDFS NameNode和HBase Master,另外三臺(tái)服務(wù)器作為數(shù)據(jù)節(jié)點(diǎn),部署HDFS DataNode和HBase Region Server,四臺(tái)機(jī)器部署zookeeper集群。PMem方案中每個(gè)數(shù)據(jù)節(jié)點(diǎn)使用192GB(6x32GB)的DRAM。DRAM方案中使用384GB內(nèi)存。
組網(wǎng)方式
圖三
RandomRead測(cè)試:
圖四
圖五
圖 四 ? 圖 五 顯示了在RandomRead測(cè)試模型下,PMem和 DRAM的性能對(duì)比。可以看到,PMem的平均延時(shí)只有DRAM的51.1%,吞吐率卻達(dá)到了DRAM的1.92倍。
隨著負(fù)載的增加,PMem的吞吐率有較大的增長(zhǎng),Tps達(dá)到16W;另外PMem隨著隨機(jī)讀數(shù)據(jù)量增大,跟aep相比有了很大的提升,可見(jiàn)PMem可以滿(mǎn)足HBase高負(fù)載大數(shù)據(jù)量下的讀緩存需求。
在 PMem 和DRAM成本相當(dāng)?shù)那疤嵯?,作為讀緩存,PMem在高負(fù)載下表現(xiàn)出來(lái)的吞吐量達(dá)到DRAM的1.92倍,延遲卻只有DRAM的51.1%。由此可見(jiàn),在 HBase 應(yīng)用中,如果發(fā)現(xiàn)存在性能瓶頸,可以選擇PMem內(nèi)存用于讀緩存,不僅提供了大幅的性能提升,而且相比于DRAM具有更高的性?xún)r(jià)比。PMem相比DRAM具有大幅性能提升的原因在于:
大容量:PMem提供了高容量的內(nèi)存,能夠緩存HBase所有的熱點(diǎn)數(shù)據(jù),而沒(méi)有緩存驅(qū)逐
高隨機(jī)讀能力:PMem的高隨機(jī)讀能力能夠滿(mǎn)足HBase隨機(jī)讀需求