天天看點

大資料發展趨勢之存算分離

作者:大資料與人工智能分享

大資料叢集從最初開始建設時,一般都采用存算一體化的架構,主要是考慮部署簡單、管理起來也友善。但是随着叢集規模的不斷擴大,在整個叢集的資源規劃和穩定性上都遭受到了不同程度的挑戰。業務資料不斷增長和技術架構的不斷革新,導緻叢集資源無法始終維護在一個存儲和計算比較均衡的狀态。是以,對叢集适當做一些存儲和計算的拆分,一方面可以提升叢集的穩定性和性能,另外一方面,也可以降低整體的成本。達到降本增效的效果。

1存算分離和存算一體化

早期的大資料叢集的建設,都是采用存算一體化的形式進行的,購買幾台即包含計算資源又帶一定存儲的機型來搭建整個大資料叢集,如下圖:

大資料發展趨勢之存算分離

随着累積的資料量的增大,大資料業務量的增多,資料存儲和處理的成本越來越高,但是在通常的情況下需要存儲能力和計算能力并不是同步提升的,兩者之間之間會打破存算的平衡,這時我們是需要單一擴充計算能力或者存儲能力這樣做可以更好的降低成本。企業資料基礎設施的投資越來越大,這部分投資擠占了企業大資料業務創新的空間。 這種架構要從Hadoop架構發展來看,2004-2006年間,Google陸續發表了Google File System、MapReduce和BigTable三篇革命性技術的文章,奠定了分布式系統理論基礎。 Hadoop1.0使用通用伺服器和普通硬碟搭建了大規模資料存儲和計算叢集。在設計之初,由于單機吞吐量和叢集網絡帶寬限制,Hadoop叢集部署都存儲和計算在一起,将計算的代碼移動到資料所在的地方,而不是将資料傳輸到計算節點,這種方式可以産生更少的資料遷移,降低機器間、機櫃間的網絡帶寬消耗,有效解決了分散在各個弱連接配接的存儲節點間的海量資料通路的困難。

2存算分離

1.多層存儲業務的資料量是一直不斷在增長的,但是資料一般具有一定的時效性,更多的會集中在最近一兩個月甚至最近一兩周的資料,大量曆史資料更多的是在某些特殊的場景下會被利用到,比如:幾個月前的使用者行為資料。大量的存儲空間被這種重要但已經“過期”的資料所占據。在大部分的存儲系統中,經常被通路的資料(熱資料)一般隻占了15% ~ 25%,而不經常被通路的資料(冷資料)卻占了75% ~ 85%。由于冷資料不活躍的特點,如果對冷資料的存儲進行一定的改造,将會取得較為不錯的成本收益。

大資料發展趨勢之存算分離

把原本一個叢集拆分成兩個叢集,分别稱之為:熱叢集和冷叢集。2.計算混部存儲上可以根據資料冷熱做到多層存儲,計算層也可以通過一定的混部措施來提升業務整體計算的使用率。按照通常企業的業務的特性,一般線上的業務高峰期每天的10:00-24:00,而離線計算的高峰期在24:00-8:00,從時間分布來看,線上業務與離線業務存在較好的互補特性。是以,如果能夠把部分離線的任務在線上業務的低峰期,能跑在線上業務的伺服器上,做到線上離線業務混合部署,也是可以節省離線計算伺服器。3.結合資料湖技術存儲分離實作

開源社群提出了湖倉融合的新興資料格式,支援資料湖、資料倉庫使用同一種格式,同一份資料支援多種元件通路,減少資料重複存儲和搬遷,縮短了資料加工鍊路、減少中間過程的同時,大大提高了資料分析的效率。

大資料發展趨勢之存算分離

3優點好處

1.存算分離改造帶來的另外一大好處是把原先大資料計算過程中的離散I/O(shuffle資料)和順序I/O(資料塊)進行了很好的拆分,解決了計算過程中的I/O瓶頸,進而進一步提升了CPU的使用率。2.在計算或者存儲能力不足時,可以進行單一擴充不再需要同時擴充計算和存儲能力可以有效的降低成本,這個也是最為重要的一點。3.存儲可以不在局限于單一模式,可以更好的支援更多的資料模式,不僅僅支援hdfs,同時也支援了s3,oss,obs等對象存儲,更友善的上雲。

4雲環境下的存算分離

回過頭來看看開頭的兩個問題:叢集經常出問題,需要做存算分離改造,其實還可以有較大的優化空間,比如:增加NameNode JVM的記憶體,或者合并小檔案減少中繼資料資訊等等,一般情況下,幾十台的規模遠不會達到HDFS性能瓶頸。至于大資料叢集是否适合做存算分離,主要從兩個方面來考慮:

  • 技術層面:存算分離是否能夠簡化我們的技術棧,或者解決某些瓶頸問題。
  • 成本層面:存算分離能否在計算性能、存儲空間等方面帶來成本上的優勢。

繼續閱讀