第二個趨勢過去大家談內存計算談高效迭代計算,當時大家覺得這是非常好的方向,把數(shù)據(jù)放進內存進行緩存,內存速度是磁盤百倍到千倍,我們把這種技術應用到現(xiàn)實當中發(fā)現(xiàn),內存容量小和價格高是比較大的限制條件,把所有數(shù)據(jù)全放內存的時候,像Spark,和Hadoop都是運行在JVM上的,內存大的時候,GC影響非常嚴重,我們能不能用更好的方式緩存數(shù)據(jù)?隨著硬件技術的發(fā)展我們發(fā)現(xiàn)內存可以被大容量的SSD取代做緩存,這個也是非常明顯的趨勢。
這張圖列出了SSD硬件技術的發(fā)展,最底層是硬盤,現(xiàn)在SSD有幾個量級的提升,我們拿市場上英特爾P3700 PCIe SSD的數(shù)據(jù)為例,讀性能是每秒鐘46萬次,是硬盤的一千倍,吞吐量是硬盤10倍以上。還有一些廠商把SSD插在內存卡槽,做成內存條的形式。目前做的性能不如P3700,未來性能會逐漸的提升。SSD的內存相比性能對比顯得沒有這么大,因為吞吐量內存的數(shù)據(jù)是8.5GB/s,PCIe的SSD是2.8GB/s也就是只有三四倍的差距,SSD 的性能已經(jīng)開始向內存接近,同時這個價格也在迅速下降,SSD公司在中國市場非常多,整個價格下降非常明顯,今天中國市場可以以一萬塊錢到兩萬塊錢買1TB的SSD,如果你買內存條只能買128GB的內存條,我們認為用SSD替代是比較好的方案。這是我們一組數(shù)據(jù),把數(shù)據(jù)放在磁盤、內存和SSD上的對比。第一個我們發(fā)現(xiàn)我們把數(shù)據(jù)放在磁盤上,性能作為1的話,我們發(fā)現(xiàn)內存的性能仍然是最高的,藍色的線是數(shù)據(jù)放在內存中的統(tǒng)計性能,紅色的線是PCIe SSD的性能,SSD性能跟內存比較接近,我們看到每一個測試場景性能對比圖,發(fā)現(xiàn)性能差距最多在30%,平均性能差異9.6%,基本控制在10%以內,你可以以十分之一的價格達到內存只差10%的性能的產品,你原來放在內存里可能只有幾百GB或者幾個TB的數(shù)據(jù),現(xiàn)在你可以把幾十TB的東西放在SSD上進行數(shù)據(jù)分析。
Hadoop2.6提出來一個概念,叫做Storage Tier,在HDFS上提供幾層存儲,一層是磁盤層,一層是SSD層,還有內存層,我可以指定你文件放在哪個層上面,以128MB數(shù)據(jù)塊為單位,決定放在哪一層上面,以為這樣性能可以迅速提升。我們很快發(fā)現(xiàn)其實沒有那么簡單,Hadoop是最早為大容量低速磁盤設計的,SSD比普通磁盤順序讀寫性能大10倍,它隨機訪問性能是磁盤的一千倍,你如果不能利用隨機訪問的性能優(yōu)勢,你的提升不會像硬件指標這么顯著。我們試過ORC格式,性能只比普通硬盤提升不到3倍。我們覺得明年這里有兩個趨勢,第一個趨勢是基于磁盤的Hadoop慢慢開始為SSD做優(yōu)化,未來會有更多的優(yōu)化針對SSD專門做的。第二個趨勢內存數(shù)據(jù)庫這樣廠商也開始覺得內存不夠用,我不可能把所有數(shù)據(jù)都放在內存里,可能是幾十T的數(shù)據(jù)我需要大容量的介質,SSD是理想的替代,已經(jīng)有很多傳統(tǒng)數(shù)據(jù)庫廠商覺得他的數(shù)據(jù)庫要專門為SSD做優(yōu)化。我們設計了一種新的數(shù)據(jù)格式,叫做holodesk,以前Spark把數(shù)據(jù)放在內存里,我們首先把數(shù)據(jù)從Spark當中剝離出來,放到一個外部的介質上面。然后放到SSD上進行存儲編碼壓縮,這里面采用了我們自己專有的編碼技術,當然也有一些索引在上面,做了這個改造以后性能有比較大的提升。這里有一個測試對比,我們比較四種組合情況,一種是基于磁盤文本格式的,第二種在SSD運行TPC-DS的部分結果,我們選TPC-DS部分的場景,因為有的場景是CPU密集型的,磁盤性能不是瓶頸,可能不一定有提升,所以我們選一些IO密集型的場景來測。大家很快發(fā)現(xiàn)如果我不改變文件格式,同樣文件放在磁盤和放在SSD,它的性能最高提升了1.5倍。這跟我們兩三年前做過測試一樣,我們把Hadoop集群的DataNode全換成SSD,性能提升大概是40%。把這個數(shù)據(jù)變成ORC格式,確實有助于提升性能,我可以過濾很多數(shù)據(jù),可以充分高SSD的性能,這個格式性能額外得到了2.7倍的提升。但是這個還不夠,還沒有完全發(fā)揮SSD性能的優(yōu)勢,所以我們采用了我們設計的holodesk存儲格式,我們采用編碼方式也有點與眾不同,用了這個存儲格式以后比ORC再提升2倍以上,有些純粹是IO密集的測試場景,可以提升五倍到十倍左右。如果采用新的列式存儲方式,我們性能可以比磁盤快8到10倍,相信未來更多軟件會專門利用SSD的這種特性。
第三個趨勢隨著現(xiàn)在傳感器網(wǎng)絡、物聯(lián)網(wǎng)的發(fā)展,數(shù)據(jù)產生的速度越來越快,當然在互聯(lián)網(wǎng)里面早就有實時數(shù)據(jù)產生,使得實時大數(shù)據(jù)的技術慢慢開始得到更多的關注,我們預計明年有更多的應用。