Kyligence使用Alluxio加速云上OLAP分析

作者:史少鋒 (shaofeng@kyligence.io),Kyligence 高級架構(gòu)師

編輯:Sammi

自上世紀(jì)以來,聯(lián)機分析處理 (OLAP) 技術(shù)已被企業(yè)廣泛采用;企業(yè)運用 OLAP 分析其業(yè)務(wù)數(shù)據(jù),生成報表,從而幫助業(yè)務(wù)人員制定商務(wù)決策。在當(dāng)今的大數(shù)據(jù)時代,OLAP 越來越重要,且面臨諸多挑戰(zhàn);而云計算使這種情況更加復(fù)雜化。本文介紹了大數(shù)據(jù)智能科技公司 Kyligence 如何在云上利用 Alluxio 提升其OLAP引擎的性能。

背景

Kyligence 公司 [1] 成立于 2016 年,是一家專注于大數(shù)據(jù)分析領(lǐng)域的科技公司。 Kyligence 的產(chǎn)品基于 Apache Kylin 的開源技術(shù)。

Apache Kylin [2] 是一個開源 OLAP 引擎,可為 Hadoop 上的 PB 級數(shù)據(jù)場景提供交互式分析(Apache Hadoop 是對大型數(shù)據(jù)集進(jìn)行分布式存儲和處理的開源軟件框架)。Apache Kylin 使用 Hadoop 的并行計算技術(shù),將超大數(shù)據(jù)集構(gòu)建到 OLAP Cube 中,通過 ANSI-SQL 查詢接口提供亞秒級低延遲響應(yīng)。

圖 1. Apache Kylin 架構(gòu)

Kyligence 的旗艦產(chǎn)品是 Kyligence Analytics Platform (KAP)。該產(chǎn)品基于 Apache Kylin,并提供了多種高級企業(yè)級功能。采用 KAP 后,用戶可使用行業(yè)標(biāo)準(zhǔn)的數(shù)據(jù)倉庫和商務(wù)智能 (BI) 運維方法,訪問 Hadoop 上的商業(yè)智能功能。在此過程中,KAP 可以簡化分析,提供自助式服務(wù),與常用 BI 工具無縫交互。所有這一切無需編程即可實現(xiàn)。

圖 2. Kyligence Analytics Platform

云端面臨的挑戰(zhàn)

KAP 利用 Hadoop MapReduce 和 Spark 將源數(shù)據(jù)構(gòu)建到 OLAP Cube 中;OLAP Cube 存儲在 KyStorage 中。KyStorage 是基于分布式文件系統(tǒng)的并針對OLAP場景進(jìn)行優(yōu)化的列式存儲引擎。在收到 SQL 查詢時,KAP 將查詢轉(zhuǎn)換成對 KyStorage 的執(zhí)行計劃,并通過 Spark executor 來執(zhí)行。

在本地部署的集群中,HDFS 是 Hadoop 和 Spark 最廣泛采用的文件系統(tǒng)。由于數(shù)據(jù)存儲在本地磁盤,且操作系統(tǒng)會對文件塊做緩存,因此 HDFS 的訪問性能很出色;另外,HDFS的文件副本默認(rèn)為 3,提供了相當(dāng)高的可靠性。

然而在云端,HDFS 并不是最佳選擇。云上的Hadoop集群按需創(chuàng)建,根據(jù)工作量指標(biāo)等動態(tài)增加或減小節(jié)點數(shù)。當(dāng)節(jié)點停止時,虛擬機的本地磁盤將被擦除,這樣可能導(dǎo)致數(shù)據(jù)丟失。在這種情況下,AWS S3 和 Azure Blob Store 等云存儲服務(wù),因其近乎無限的容量和大于 99.999% 的 SLA,成為最佳替代品。AWS EMR 和 Azure HDInsight 等 Hadoop 產(chǎn)品為這些存儲服務(wù)提供原生支持。用戶可通過 MapReduce、Spark 或定制應(yīng)用進(jìn)行透明訪問,就像在常用分布式文件系統(tǒng)上一樣。

圖 3. 云端 KAP

盡管云存儲服務(wù)的擴(kuò)展性和持續(xù)性好于 HDFS,但其性能受到所租用的虛擬機網(wǎng)絡(luò)帶寬的限制。此外,S3 等云存儲服務(wù)不是一個真正意義上的文件系統(tǒng);其元數(shù)據(jù)操作如 ‘list’ 會比較耗時,’rename’ 操作實際上是 ‘copy’,對于大數(shù)據(jù)場景來說難以接受。所有這些都使其整體性能差于 HDFS。

KAP 作為一個低延遲的 OLAP 引擎,其性能在很大程度上依賴于分布式文件系統(tǒng)的性能。在引入 Alluxio 之前,移至云端時,用戶不得不忍受性能降級,或者切換至HDFS并在 S3 與 HDFS 之間進(jìn)行備份和恢復(fù),以在性能與持久性之間獲得平衡,這使得部署和維護(hù)變得復(fù)雜,且容易出錯。

KAP 如何利用 Alluxio

為了克服云端的存儲限制問題,我們決定在存儲服務(wù)上為 KyStorage 添加一個緩存層,而Alluxio很好地滿足了這個需求。

Alluxio [3] 原名 Tachyon,是世界上第一個以內(nèi)存為中心的虛擬分布式存儲系統(tǒng)。它統(tǒng)一了數(shù)據(jù)訪問方式,為上層計算框架和底層存儲系統(tǒng)構(gòu)建了橋梁。應(yīng)用程序只需連接 Alluxio 即可訪問存儲在任意底層存儲系統(tǒng)中的數(shù)據(jù)。此外,Alluxio 以內(nèi)存為中心的架構(gòu)使得數(shù)據(jù)訪問速度比現(xiàn)有方案快幾個數(shù)量級。

在大數(shù)據(jù)生態(tài)系統(tǒng)中,Alluxio 介于計算框架或任務(wù)(如 Apache Spark、Apache MapReduce、Apache HBase、Apache Hive 或 Apache Flink)與各種存儲系統(tǒng)(如Amazon S3、Google Cloud Storage、OpenStack Swift、GlusterFS、HDFS、MaprFS、Ceph、NFS 和 Alibaba OSS)之間。Alluxio 顯著提升了大數(shù)據(jù)生態(tài)系統(tǒng)的性能。Alluxio 與 Hadoop 兼容。現(xiàn)有數(shù)據(jù)分析應(yīng)用程序,如 Spark 和 MapReduce 程序,可以不修改任何代碼,直接在 Alluxio 上運行。

圖 4. Alluxio

此外,Alluxio 提供分層存儲,不僅可以管理內(nèi)存,還可管理 SSD 和 HDD,讓更大的數(shù)據(jù)集存儲在 Alluxio 上。數(shù)據(jù)在不同層之間自動進(jìn)行管理,確保熱數(shù)據(jù)在更快的存儲層上。

借助 Alluxio,KAP不需要進(jìn)行代碼或架構(gòu)更改。將 Alluxio 安裝在 Spark 運行的每個節(jié)點上,將 S3 存儲桶或 Azure Blob Store 映射為Alluxio的底層文件系統(tǒng)。然后,配置 KAP 通過 Alluxio 來讀取S3 或 Blob Store 中的 KyStorage 文件。首次加載時會有點慢,因為 Alluxio 需要將數(shù)據(jù)讀取到內(nèi)存中。但此后的訪問速度會快很多,因為 Alluxio 會智能地從 Spark executor 運行的本地工作機中返回數(shù)據(jù)塊。

下面是引入 Alluxio 后的架構(gòu):

圖 5. 采用 Alluxio 后的 KAP

由于熱數(shù)據(jù)緩存在 Alluxio 中,從而改進(jìn)了讀取 KyStorage 的性能,極大提升了KAP查詢引擎的性能和吞吐量。我們在 AWS 和 Azure 上分別進(jìn)行了基準(zhǔn)測試,所獲得的結(jié)果驗證了這一推斷。

AWS S3 測試

測試信息:

Apache JMeter 在 KAP 上運行 SSB 查詢,并禁用查詢緩存,因此每次需要從文件系統(tǒng)中讀取 KyStorage。我們分別在 S3 和 Alluxio上收集查詢性能。下面是在 S3 和 Alluxio 上運行 SSB 的統(tǒng)計信息。

圖 6. 在 S3上運行SSB

圖 7. 在 Alluxio 上運行 SSB

在對比所有查詢的平均查詢延遲后,我們得到以下結(jié)果:

圖 8. SSB 查詢延遲比較

從上圖可以看出,Alluxio 上的平均查詢延遲為 0.4 秒,在 S3 上為 1.8 秒。KAP 在 Alluxio 上的性能比在 S3 上的性能快 4 倍之多。

Azure Blob Store 測試

為了深入了解 Alluxio 在 Windows Azure Storage Blob (WASB) 上的性能,我們進(jìn)行了另一項測試。這次,我們選擇真實場景(用戶畫像分析)并添加了使用HDFS的場景,從 Web 應(yīng)用程序中收集查詢樣例。在運行多次后,取其平均值。

測試信息:

樣例查詢?nèi)缦拢?/p>

以下是三個存儲系統(tǒng)的平均查詢時間。

圖 9. WASB vs HDFS vs Alluxio

從上圖可以看出,本地 HDFS 在 5 個場景中,有 4 個場景的性能是最佳的。Azure Blob Store 的執(zhí)行時間在所有場景中是最長的。Alluxio 的性能介于 HDFS 和 Blob Store 之間,但與 HDFS 非常接近。平均而言,與直接讀取 Azure Blob Store 相比,Alluxio 可助力 KAP 提升 3 至 4 倍的性能。

總結(jié)

Alluxio 可以通過使用其透明的命名和掛載 API,跨不同存儲系統(tǒng)有效管理數(shù)據(jù)。采用 Alluxio 后,KAP 可以在云端,在性能、成本和管理之間實現(xiàn)良好的平衡。

參考文獻(xiàn):

[1]Kyligence

[2]Apache Kylin

[3]Alluxio

[4]SSB-Kylin

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容