湖倉一體,Hologres加速雲資料湖DLF技術原理解析

阿里雲大資料AI技術發表於2022-04-20

Hologres(中文名互動式分析)是阿里雲自研的一站式實時數倉,這個雲原生系統融合了實時服務和分析大資料的場景,全面相容PostgreSQL協議並與大資料生態無縫打通,能用同一套資料架構同時支援實時寫入實時查詢以及實時離線聯邦分析。它的出現簡化了業務的架構,為業務提供實時決策的能力,讓大資料發揮出更大的商業價值。從阿里集團誕生到雲上商業化,隨著業務的發展和技術的演進,Hologres也在持續不斷最佳化核心技術競爭力,為了讓大家更加了解Hologres,我們計劃持續推出Hologres底層技術原理揭秘系列,從高效能儲存引擎到高效率查詢引擎,高吞吐寫入到高QPS查詢等,全方位解讀Hologres,請大家持續關注!

往期精彩內容:


本期我們將帶來Hologres高效能分析引擎加速查詢雲資料湖DLF的技術原理解析。


隨著雲服務被接受的程度不斷提升,雲使用者日益願意將其收集的資料儲存在低成本的物件儲存裡,比如OSS,S3等。與此同時,基於雲的資料管理方式也得到相應的推廣,後設資料也不斷儲存在阿里雲DLF(Data Lake Formation)上。OSS和DLF的結合成就了一種新的資料湖搭建方式。這種基於雲端儲存的資料湖集累的資料規模也不斷增長,相應的湖倉一體的需求也孕育而生。湖倉一體架構基於開放格式的外部儲存,以及高效能的查詢引擎,讓資料架構靈活、可擴充套件、可插拔。


Hologres在湖倉一體場景上與DLF天然無縫融合,無需資料匯入匯出就能實現加速查詢由DLF管理儲存在OSS的資料,全面相容訪問各種DLF支援檔案格式,實現對PB級離線資料的秒級和亞秒級互動式分析。而這一切的背後,都離不開Hologres的DLF-Access引擎,透過DLF-Access實現對DLF後設資料以及背後的OSS資料進行訪 問。另外,透過結合Hologres 高效能分散式執行引擎HQE 的處理,訪問DLF/OSS的效能得到進一步提高。


Hologres加速查詢DLF/OSS主要有以下幾個優勢:

  • 高效能: 可以直接對DLF/OSS資料 加速查詢,具有秒級響應的查詢效能,在OLAP場景可以直接即席查詢,滿足絕大多數報表等分析場景。
  • 低成本:使用者在在DLF/OSS上儲存的大量資料,無需遷移和匯入資料而由Hologres直接進行訪問。在享受雲資料湖的低成本基礎之上,也避免了資料遷移成本。
  • 相容性:可以實現以高效能和全相容的方式訪問各種DLF檔案格式,支援CSV、Parquet、ORC、Hudi、Delta等格式(其中Hudi、Delta在1.3版本支援)。而這些檔案格式又是通用資料湖相容的。

湖倉一體架構介紹

如圖所示是Hologres訪問DLF/OSS的湖倉一體架構,可以看出整個架構非常簡潔:

xuefu1.png


雲資料湖裡的資料儲存在OSS,後設資料儲存在DLF。當Hologres執行一條Query去加速查詢DLF/OSS的資料時,在Hologres端:

  • Frontend接收SQL請求,並對SQL進行解析轉化,然後透過RPC向DLF-Access請求獲取Meta等相關資訊。
  • HQE(Hologres Engine)透過DLF-Access獲取OSS/DLF具體的資料相關資訊,再返回給Frontend。

其中DLF-Access是一個分散式的資料訪問引擎,由多個平等程式組成,具備橫向擴充套件能力。任何一個程式都可以完成兩種角色:

  • 處理Meta相關的請求,主要負責獲取表、分割槽後設資料、檔案分片等功能。
  • 負責具體讀取或寫入資料請求,涉及列裁剪,資料轉換,資料封裝等功能。

DLF外表引擎核心技術創新

基於DLF-Access的架構,能做到對DLF/OSS的資料高效能加速查詢,主要是基於以下技術創新優勢:

1)抽象分散式外表

結合DLF/OSS的分散式特性,Hologres抽象了一個分散式的外表,來支援訪問包括傳統或雲資料湖的資料。

2)和 DLF Meta無縫互通

DLF-Access和Data Lake Formation的 Meta 無縫互通,可以做到 Meta 和 Data 實時獲取,支援透過Import Foreign Schema命令,同步DLF的後設資料到Hologres的外表,實現外表的自動建立。

3)向量化資料讀取及轉換

DLF-Access能充分利用資料湖列存檔案的特點進行向量化的資料讀取及轉換,進一步提升效能。

4)返回共享式資料格式

DLF-Access轉換後的資料格式為共享式的Apache Arrow格式。Hologres可以直接使用返回的資料,避免額外資料序列化及反序列化的開銷。

5)Block模式IO

為了避免網路帶來的延遲及負載,DLF-Access和Hologres的內部傳輸資料單位為block,預設為8192行資料。

6)程式語言隔離

Hologres是用C/C++開發出來的雲原生OLAP引擎。DLF雲資料湖和傳統的開源資料湖高度相容,而開源資料湖大多提供的是基於Java的庫。使用獨立的DLF-Access引擎架構可以隔離不同程式設計語種,即避免了原生引擎和虛擬機器之間的高成本轉換,又保持了對資料湖靈活多樣的資料格式的支援。

DLF外表引擎升級到HQE

上面提到了Hologres透過DLF-Access進行查詢加速DLF外表,查詢時效能可以做到很好,但是和Hologres互動時中間會有一層RPC 互動,在資料量較大時網路會存在一定瓶頸。


因此基於Hologres已有的能力,Hologres V1.3版本對執行引擎進行了最佳化,支援 Hologres HQE查詢引擎直讀DLF 表,在效能上得到進一步的提升,較早期版本讀取有 30%以上的效能提升。


這主要得益於以下幾個方面:

1) 節省了 DLF-Access中間 RPC 的互動,節省了一次額外的資料的重分佈,在效能上得到進一步的提升。

2) 複用Hologres的Block Cache,這樣多次查詢時無需訪問儲存,避免儲存IO,直接從記憶體訪問資料,更好的加速查詢。

3) 可以複用已有的Filter Pushdown(下推)能力,減少需要處理的資料量。

4) 在底層的 IO層實現了預讀和Cache,更進一步加速Scan時的效能。

對事務資料湖(Hudi、Delta)的支援

目前DLF支援了事務資料湖所用的Hudi,Delta等表格式。Hologres利用DLF-Access直接讀取這些表中的資料,而不增添任何額外的操作,滿足了使用者對實時湖倉一體架構的設計需求。

總結

Hologres透過DLF-Access與DLF/OSS深度整合,充分利用Hologres和DLF/OSS的各自優勢,以極致效能為目標,直接加速查詢雲資料湖資料,讓使用者更方便高效的進行互動式分析,同時也極大降低了分析成本,實現湖倉一體的分析能力。


作者簡介: Xuefu Zhang,阿里巴巴資深技術專家,現從事Hologres研發工作。


後續我們將會陸續推出有關Hologres的技術底層原理揭秘系列,敬請持續關注!往期精彩內容:


瞭解Hologres:

合集.png


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70004426/viewspace-2887900/,如需轉載,請註明出處,否則將追究法律責任。

相關文章