在很多大資料應用場景中,某些具體的處理問題通常只涉及到整體資料集的乙個子集或部分資料。這導致長時間占用大規模集群的整體資料分析方式的資源有效利用率較低,並且總體代價較高,尤其在系統採用計算和儲存並置(co-locate)部署架構的場景下各位嚴重。另外,在很多即席查詢和計算應用中,資料的分析任務通常由上層使用者零散地給出,與用於處理管道資料和流資料的連續執行分析任務不同,這種零散的分析任務會造成集群的計算能力有些時間段不能被充分利用。另一方面,集群的儲存容量必須容納可能被訪問到的任何資料,儘管實際上每次需要使用的工作集合只是整體資料的一小部分。最後,集群本身還需要大量精心的維護管理工作,以確保集群使用者之間的隔離和效能不受彼此太多影響。
對於上述這些問題的簡潔而優雅的解決方案是採用一種上層按需計算集群結合底層物件儲存的架構。這種架構通過解耦需要連續執行的持久化儲存模組和只有發生分析任務才使用的計算模組來解決這些問題的根源。與上段提到的需要連續執行的整體化集群架構相比,這種架構具有如下優勢:
事實上,這種計算和儲存解耦的方案具備上述優勢的同時,也存在著乙個關鍵的缺點:效能損失。這是因為底層的物件儲存通常並不是為高i / o吞吐量而設計的,因此會導致上層的計算分析任務可能會因為資料訪問效率低下而整體效能變地低效。
幸運的是新架構存在的這個問題可以通過在計算集群上部署alluxio得到很好的解決。通過引入alluxio,可以使得計算任務的i/o速度達到記憶體級別,並且不需要維護長時間執行的集群或昂貴的前期投入成本。
上圖顯示了利用alluxio提公升按需資料分析服務效能的架構圖,從圖中可以看出alluxio與按需使用的計算集群部署在一起,從而減少計算集群頻繁訪問遠端儲存的耗時。
alluxio是部署在計算群集中的虛擬的分布式儲存系統,為上層應用的i/o提供記憶體級訪問速度的效能。 通過alluxio虛擬化底層儲存系統,使得任何基於alluxio api介面(alluxio提供hdfs相容介面)編寫的計算應用程式都能自動地訪問用任何或多個底層儲存系統,而不需要修改任何**。此外,alluxio是乙個設計為可橫向擴充套件的分布式儲存系統,這意味著通過部署更多的機器來輕鬆地儲存更大的資料集並提高訪問效能。
事實上,部署和使用alluxio對上層應用程式而言是簡單和透明的。應用程式還是不斷地訪問資料,就好像作業直接訪問的是遠端儲存上的資料,alluxio會智慧型地將熱資料儲存在計算集群的記憶體中以供後續讀取。整個過程對於應用程式是透明的,並且不需要進行手動etl。一旦資料進入alluxio,它將對集群的所有應用程式可用,因此在同一資料集被多次使用的場景中,應用的效能會大幅提高。
alluxio為使用者提供較高的靈活性和效率。任何需要持久化的結果或轉換都可以通過alluxio直接完成,alluxio可以將資料同步傳播到底層儲存系統,以確保資料不會因為節點故障而丟失。此外,使用者還可以選擇僅在alluxio記憶體中儲存臨時資料或中間資料,從而允許計算任務對這些快取的資料進行記憶體級速度訪問。
相比於長期執行的計算分析集群高昂的成本和維護工作量,與物件儲存結合使用的按需計算集群的架構是乙個更簡潔和更具價效比的服務解決方案。通過在計算集群中並置(co-locate)部署alluxio和計算框架,我們克服了這種按需集群模型的關鍵性的效能缺點。alluxio系統的架構設計使其成為大資料軟體棧中提供此核心功能的乙個很好的選擇。
利用Alluxio系統提公升按需資料分析服務的效能
雲棲社群大資料頻道此外,通過maxcompute及其配套產品,低廉的大資料分析僅需幾步,詳情訪問 在很多大資料應用場景中,某些具體的處理問題通常只涉及到整體資料集的乙個子集或部分資料。這導致長時間占用大規模集群的整體資料分析方式的資源有效利用率較低,並且總體代價較高,尤其在系統採用計算和儲存並置 c...
利用NSCache提公升效率
解決辦法就是把nsdata物件快取起來,先從nscache裡面讀取資料,然後再從檔案系統獲取資料,提高效率。方法如下 步驟1 需要乙個單例的nscache,由於我們的fileutil本來就是單例的,所以只是需要在初始化fileutil的時候例項出乙個nscache就行了。cache nscache ...
利用NSCache提公升效率
不過在模擬器中模擬記憶體警告時,快取不會做清理動作 為了確保接收到記憶體警告時能夠真正釋放記憶體,最好呼叫一下 removeallobjects 方法 nscache 是執行緒安全的,在多執行緒操作中,不需要對 cache 加鎖 nscache 的 key 只是做強引用,不需要實現 nscopyin...