點選免費下載下傳
《實時數倉技術入門一本通》>>>
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicGcq5iY0YWZ1UDMzkTYxUzY1UGOycDN0ATMhRmNmljZ4ImMl9CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.jpg)
也可在PC端打開
https://developer.aliyun.com/topic/download?id=961下載下傳
一、背景介紹
從技術影響力的角度來說,Github Star排名前5的系統也是目前市面上比較流行的開源OLAP系統,它們的開源時間以及産品的定位各不相同,我們将會選取排名前3的系統來與Hologres做深度的對比。
另外再從業務的視角來看一下大資料架構中OLAP系統的一個定位和功能,以及它在業務系統中的作用,可以看到,在整個大資料架構中,為了解決不同的問題,需要用到不同的系統,在大資料架構中,OLAP系統百家争鳴、萬花齊放。
二、開源系統對比
将會從以下幾個方面來深度對比Hologres和開源OLAP系統。
1)存儲計算角度
在存儲方面,Hologres支援毫秒級的寫入可見性,Druid和ClickHouse支援的是秒級。同時Hologres支援寫入更新。
在計算方面,Hologres同Druid和ClickHouse都采用了向量化/SIMD執行器,值得一體的是,因Hologres底層技術原理可以支援聯邦查詢和高QPS的點查,這些都是Druid和ClickHouse無法做到的。
2)SQL、進階功能和生态
在SQL方面,Hologres是相容Postgres文法,開箱即可用,學習成本低,而Druid和ClickHouse的文法都是較複雜,難以上手。并且對于update、delete、join等,Druid和ClickHouse的支援都是比較有限。
在進階功能上,Hologres支援向量檢索、空間資料等,支援更加豐富的業務場景,并且對于安全管控方面,Hologres也有着非常嚴苛的權限管理,例如RAM、IP白名單等。
在生态上Hologres支援會更加豐富,Hologres提供JDBC接口,且能通過Flink或者DataX、StreamX寫入,實作多種異構資料源輕松導入Hologres。
三、遷移指南
對比完主流的開源OLAP引擎之後,肯定就會有人問,要是想把OLAP引擎遷移到Hologres,應該怎麼做呢?它們的不同點在哪裡呢?下面将會一一講述。
1)Presto遷移
- Presto簡介及應用場景
Presto是Facebook推出的一個分布式的SQL查詢引擎,基于記憶體的并行計算,它可以提供比較快速的一個互動式查詢能力。應用場景有離線加速,聯邦查詢,資料湖,以及實時數倉。
從Presto遷移到Hologres後,基本上功能可以無縫的得到支援,而且Presto不支援實時數倉,而Hologres支援實時數倉,提供寫入和更新能力,并支援高QPS的查詢能力。
- 遷移方案
可以分别從資料模型,資料類型,SQL,資料接入,BI生态來看。資料模型上2者概念類似,隻不過Presto的Catalog需要變成Hologres的Database。資料類似方面Hologres同Presto一緻都支援基本以及複雜類型,無需做修改。SQL層面,2者都是支援ANSI SQL,學習成本也比較低。對于資料接入和生态而言,Hologres同Presto都提供JDBC接口,無需更換工具,隻需要更換對應的連接配接資訊就能立即使用
總結來看,遷移的成本是非常低的,基本上可以做到無縫的遷移。
2)Druid遷移
- Druid簡介及應用場景
Druid自帶存儲引擎,支援實時資料,并提供亞秒級查詢的OLAP引擎。
Druid的适用場景有:
- 時序組織資料(點選,曝光,監控)
- 資料品質要求不高(有可能重複/丢失)
- 海量append only資料 (不支援更新)
- 單表聚合類查詢
Druid不适用的場景有:
- 高QPS明細場景
- 有一緻性要求的場景
- 需要更新的場景
- 需要join的場景
從Druid遷移到Hologres後,可以支援一些原來Druid不适用的場景
下面來看實踐,首先是資料模型的遷移。Druid所有資料都存儲在dataSource中,dataSource類似于Hologres的表。Druid通過json的方式來描述一個dataSource的schema,dataSource schema與Hologres的概念映射,如下圖所示。
- 遷移示例
下圖是一個具體的從Druid遷移Hologres的示例。
就DDL而言,如上面所訴,Datasorce修改為table,其餘的參數都配置為Hologres的字段資訊即可。
再來看Query相關的Query遷移,Druid目前版本支援兩種查詢方式:SQL查詢和Native查詢,SQL查詢和Hologres的SQL查詢方式類似,在此主要介紹Native query到Hologres的遷移方式。
Scan查詢修改為Hologres中的Select 字段即可。
TOPN查詢修改為Sum和Group by查詢即可。
Timeseries查詢修改where條件的sum查詢。
GroupBy查詢在Hologres中也是Group by,無需做大幅度的修改。
3) ClickHouse遷移
- ClickHouse簡介及應用場景
ClickHouse自帶存儲引擎,支援實時資料,并提供亞秒級查詢,C++實作的OLAP分布式列式資料庫。
适用場景有:
- 海量明細資料存儲
- 寫入可見性/一緻性要求不高
不适用的場景有:
- 高QPS查詢
- 高QPS更新
- 遷移方案
常見實時數倉寫傳入連結路如下圖所示,通過Flink将實時日志資料寫入到ClickHouse中。這裡将會設計到兩種資料遷移。
首先是增量資料遷移,Hologres緊密結合Flink生态,如果客戶之前是通過Flink來向ClickHouse寫入實時資料,那麼通過Hologres Connector就能可以友善地将資料導入Hologres,将增量資料遷移過來。
然後是存量資料遷移,由于DataX等插件,暫不支援ClickHouse Reader。 如果已經在ClickHouse中存儲了存量資料,需要搬遷至Hologres,目前可以用ClickHouse -> COPY OUT -> Data File -> COPY IN -> Hologres的鍊路,需要确定好字元集、分隔符和NULL标記等規範就能遷移。
遷移過程中,資料模型的對應關系,如下圖所示。
- 遷移示例
遷移的DDL示例如下圖所示,建表語句可以保持一緻,但是索引的建立需要改成call set語句。
對于一些典型查詢Query,隻需要修改部分的文法即可達到更好的效果。
四、典型案例分享
從Hologres誕生到賦能阿裡巴巴集團内大多數核心業務再到雲上商業化,已經沉澱無數開源OLAP成功遷移Hologres的案例。下面将會介紹典型的成功遷移案例。
1)搜尋業務
在最開始的時候,阿裡巴巴的搜尋推薦的業務,用到的是一個非常複雜的架構,如下圖所示。我們把這個業務架構仔細拆開來看,它具有需要系統具備多種能力:第一,KVStore:Redis/Mysql/Hbase/Cassandra 存儲能力。第二,互動式計算能力: Presto/Drill 計算能力。第三, 實時數倉:Clickhouse/Druid存儲+計算。
正是因為這樣一些複雜的業務架構,我們做了一個HSAP的系統,進行了業務的架構更新,把多種能力有機統一于一個引擎。這樣,使用者隻需要通過Hologres就可以解決問題,讓使用者的學習成本降低非常多,不需要再去學習多個系統。 更新後的架構:
下圖是具體的遷移表現。遷移到Hologres後,資源節省60%。平均查詢性能大幅提升,開發周期顯著加快。
2)某社交網站替換ClickHouse
在阿裡雲上也有成功的遷移案例,例如某個社交網站的客戶成功從ClickHouse遷移到Hologres,資源也節省了幾百core,原來隻能存儲7天的資料,現在能無限制存儲并支援7-15天的明細資料複雜查詢,相比之前的實時寫入QPS也有大幅提升。
3)某遊戲客戶替換Redis
下面是公共雲上某個遊戲客戶替換Redis後的收益,首先是成本下降了50%,也支援了複雜查詢,學習成本也降低了,無需特别維護,就能開箱即用。
五、總結
Hologres作為HSAP服務分析一體化的最佳落地實踐,。支援聯邦查詢,通過Hologres完全無縫的加速離線場景。同時也能解決AP常見的能力,同時比AP系統的性能更好。并且還能解決HBASE這種點查系統的能力,可以解決實時推薦的一些場景的能力。
在整個大資料架構中,通過Hologres完成了非常好的業務架構的整合,讓業務能力得到非常大的擴張,使用者可以非常友善的使用一套系統來完成各種各樣的業務。
關鍵詞:Hologres實時數倉,開源OLAP系統,HSAP更新實踐,大資料