JindoTable數據湖優化與查詢加速

概述

近幾年,數據湖架構的概念逐漸興起,很多企業都在嘗試構建數據湖。相比較大數據平臺,數據湖在數據治理方面提出了更高的要求。對於數據湖場景所提出的新需求,“傳統”的大數據工具在很多方面都面臨着新的挑戰。JindoTable 正是專爲解決數據湖管理結構化數據甚至是半結構化數據的痛點而設計的,包括數據治理功能和查詢加速功能。

數據優化

數據湖需要存儲來自各種數據源的數據。對於 HDFS 集羣,小文件問題讓很多用戶倍感煩惱。在存儲計算分離的數據湖中,小文件同樣會產生很多問題:過多的文件數會導致目錄list時間顯著變長,小文件也會影響很多計算引擎的併發度。此外,由於對象存儲一般以對象爲單位,小文件也會導致請求數量的上升,會明顯影響元數據操作的性能,更會增加企業需要支付的費用。而如果數據文件過大,如果數據又使用了不可分割的壓縮格式,後續計算的併發度會過低,導致無法充分發揮集羣的計算能力。因此,即使是數據湖架構中,對數據文件進行治理和優化也是非常必要的。

基於數據湖所管理的元數據信息,JindoTable 爲客戶提供了一鍵式的優化功能,用戶只要在資源較爲空閒時觸發優化指令,JindoTable 可以自動爲用戶優化數據,規整文件大小,進行適當的排序、預計算,生成適當的索引信息和統計信息,結合計算引擎的修改,可以爲這些數據生成更加高效的執行計劃,大幅減少用戶查詢的執行時間。數據優化對用戶透明,優化前後不會出現讀取的數據不一致的情況。這也是數據湖的數據治理所不可或缺的功能。

查詢加速

JindoTable 還有一項重磅功能,就是查詢加速功能。在數倉中,數據分析總是越快越好。尤其是 Ad-Hoc 場景,對查詢延遲非常敏感。現在“湖倉一體”的概念也很火,對於數據湖這種普遍使用存儲計算分離場景的架構,如何儘可能減少 IO 開銷,對於縮短查詢時間是非常關鍵的。

之前介紹的 JindoTable 數據優化功能,是在存儲端減少額外開銷,並且通過提前的計算,爲運行時優化打好基礎。JindoTable 的查詢加速功能則是在查詢執行時,通過把計算推向存儲,減少計算時整體的 IO 壓力,同時利用存儲端空閒的計算資源提供高效的計算,縮短整體查詢時間。JindoTable 的加速服務結合修改後的各種計算引擎,可以把儘可能多的算子下推到緩存端,並且利用高效的 native 計算能力過濾大量原始數據,再把數據高效地傳輸給計算引擎。這樣,計算引擎所需處理的數據大大減少,甚至一些計算也可以直接略過,後續的計算所需的時間自然也就大爲減少。

image

分層存儲

數據湖所存儲的數據量通常增長迅速。對於傳統的 Hadoop 集羣,如果數據量急劇增長,所需的存儲資源也要相應增加,這樣會導致集羣規模迅速擴大,計算資源也會變得過剩。拋開集羣規模增長導致的其他問題不談,光是運營集羣的成本問題就足夠讓人頭疼。好在公有云平臺提供了對象存儲的服務,我們可以按存儲的數據量來付費,這在節約成本的同時,用戶也不用擔心 HDFS 在集羣資源和數據量快速增長情況下的穩定性問題。但數據量快速增長還是會等比例的增加整體開銷。

阿里雲的對象存儲服務 OSS,爲用戶提供了低頻存儲和歸檔存儲,對於訪問不是那麼頻繁的數據,如果能夠轉爲低頻或歸檔模式來存儲,可以儘量節約成本。而一部分數據如果有頻繁的訪問需求,放在遠離計算資源的對象存儲上,又會導致計算時的 IO 出現瓶頸。JindoTable 對接數據湖中各種計算引擎,以表或分區爲最小單位,統計數據的訪問頻次。根據用戶設定的規則,JindoTable 可以告訴用戶哪些表或者分區的訪問頻次較高,讓用戶可以通過 JindoTable 命令,藉助 JindoFS 提供的底層支持,把這些表或者分區對應的數據緩存到計算集羣內,加速查詢的執行。同時,對於訪問頻次較低的表或者分區,用戶也可以使用 JindoTable 把對應的數據轉爲低頻或者歸檔存儲類型,或是設置生命週期。在需要對歸檔數據操作的時候,可以直接用 JindoTable 對歸檔數據進行解凍。JindoTable 還爲用戶提供了元數據管理,方便用戶檢視表或者分區當前的存儲狀態。JindoTable 讓用戶能儘可能高效地管理自己的數據,節約成本的同時,不犧牲計算性能。

image

小結

對於企業來說,數據湖爲各種來源的數據提供了整合的可能性。背靠豐富的雲產品體系,數據湖架構可以幫助客戶進一步發掘數據價值,實現企業願景。JindoTable 在數據湖解決方案中,爲用戶提供數據治理和查詢加速的增值功能,進一步降低用戶數據入湖的門檻,幫助用戶在更低的成本下,實現更高的數據價值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章