天天看點

利用Alluxio系統提升按需資料分析服務的性能

在很多大資料應用場景中,某些具體的處理問題通常隻涉及到整體資料集的一個子集或部分資料。這導緻長時間占用大規模叢集的整體資料分析方式的資源有效使用率較低,并且總體代價較高,尤其在系統采用計算和存儲并置(co-locate)部署架構的場景下各位嚴重。另外,在很多即席查詢和計算應用中,資料的分析任務通常由上層使用者零散地給出,與用于處理管道資料和流資料的連續運作分析任務不同,這種零散的分析任務會造成叢集的計算能力有些時間段不能被充分利用。另一方面,叢集的存儲容量必須容納可能被通路到的任何資料,盡管實際上每次需要使用的工作集合隻是整體資料的一小部分。最後,叢集本身還需要大量精心的維護管理工作,以確定叢集使用者之間的隔離和性能不受彼此太多影響。    

對于上述這些問題的簡潔而優雅的解決方案是采用一種上層按需計算叢集結合底層對象存儲的架構。這種架構通過解耦需要連續運作的持久化存儲子產品和隻有發生分析任務才使用的計算子產品來解決這些問題的根源。與上段提到的需要連續運作的整體化叢集架構相比,這種架構具有如下優勢:

<b>更高的存儲成本效益和可擴充性:</b>對象存儲的成本效益很高,大多數對象存儲服務提供商都為使用者提供無縫擴充到任意資料量的功能。

<b>更高的計算成本效益和系統彈性:</b>僅在需要時才使用計算資源,并在必要時擴充計算叢集規模以适應不同規模的分析任務。

<b>降低維護成本:</b>計算叢集變成一種消耗性資源,使用完後即可釋放相關資源,并不需要長時間維護。使用者也不需要擔心資料的安全問題,因為通常提供給計算叢集的資料是來自底層對象存儲的資料副本。

事實上,這種計算和存儲解耦的方案具備上述優勢的同時,也存在着一個關鍵的缺點:性能損失。這是因為底層的對象存儲通常并不是為高i / o吞吐量而設計的,是以會導緻上層的計算分析任務可能會因為資料通路效率低下而整體性能變地低效。

幸運的是新架構存在的這個問題可以通過在計算叢集上部署alluxio得到很好的解決。通過引入alluxio,可以使得計算任務的i/o速度達到記憶體級别,并且不需要維護長時間運作的叢集或昂貴的前期投入成本。

<b>1. 架構示例圖介紹</b>

利用Alluxio系統提升按需資料分析服務的性能

上圖顯示了利用alluxio提升按需資料分析服務性能的架構圖,從圖中可以看出alluxio與按需使用的計算叢集部署在一起,進而減少計算叢集頻繁通路遠端存儲的耗時。

<b>2. 結合alluxio系統架構的優勢分析</b>

alluxio是部署在計算群集中的虛拟的分布式存儲系統,為上層應用的i/o提供記憶體級通路速度的性能。 通過alluxio虛拟化底層存儲系統,使得任何基于alluxio api接口(alluxio提供hdfs相容接口)編寫的計算應用程式都能自動地通路用任何或多個底層存儲系統,而不需要修改任何代碼。此外,alluxio是一個設計為可橫向擴充的分布式存儲系統,這意味着通過部署更多的機器來輕松地存儲更大的資料集并提高通路性能。

事實上,部署和使用alluxio對上層應用程式而言是簡單和透明的。應用程式還是不斷地通路資料,就好像作業直接通路的是遠端存儲上的資料,alluxio會智能地将熱資料儲存在計算叢集的記憶體中以供後續讀取。整個過程對于應用程式是透明的,并且不需要進行手動etl。一旦資料進入alluxio,它将對叢集的所有應用程式可用,是以在同一資料集被多次使用的場景中,應用的性能會大幅提高。

alluxio為使用者提供較高的靈活性和效率。任何需要持久化的結果或轉換都可以通過alluxio直接完成,alluxio可以将資料同步傳播到底層存儲系統,以確定資料不會因為節點故障而丢失。此外,使用者還可以選擇僅在alluxio記憶體中存儲臨時資料或中間資料,進而允許計算任務對這些緩存的資料進行記憶體級速度通路。

<b>3. 總結</b>

相比于長期運作的計算分析叢集高昂的成本和維護工作量,與對象存儲結合使用的按需計算叢集的架構是一個更簡潔和更具成本效益的服務解決方案。通過在計算叢集中并置(co-locate)部署alluxio和計算架構,我們克服了這種按需叢集模型的關鍵性的性能缺點。alluxio系統的架構設計使其成為大資料軟體棧中提供此核心功能的一個很好的選擇。

<b>版權申明:</b>本文由南京大學顧榮、黃志翻譯整理自alluxio公司技術部落格,由alluxio公司授權雲栖社群及csdn首發(聯合),版權歸alluxio公司所有,未經版權所有者同意請勿轉載。

繼續閱讀