Kylin on HBase 方案經過長時間的發展已經比較成熟,但也存在著局限性,因此,Kyligence 推出了 Kylin on Parquet 方案。通過標準數據集測試,與仍採用 Kylin on HBase 方案的 Kylin 3.0 相比,Kylin on Parquet 的構建引擎性能有... ...
Kylin on HBase 方案經過長時間的發展已經比較成熟,但也存在著局限性,因此,Kyligence 推出了 Kylin on Parquet 方案(瞭解詳情戳此處)。通過標準數據集測試,與仍採用 Kylin on HBase 方案的 Kylin 3.0 相比,Kylin on Parquet 的構建引擎性能有了很大的提升,對於複雜查詢也有更好的性能表現。
本篇文章主要通過使用標準 SSB 數據集和 TPC-H 數據集,來分別獲取 Kylin on Parquet 和 Kylin 3.0 構建引擎以及查詢引擎的性能數據,然後進行對比分析,讓用戶們能夠更清楚地瞭解到當前 Kylin on Parquet 相對於 Kylin 3.0(仍採用 Kylin on HBase )的優勢和不足。
- SSB(Star Schema Benchmark)是一套用於測試資料庫產品在星型模式下性能表現的基準測試規範,也是 OLAP 領域經常會用到的數據集。
- TPC(Transaction Processing Performance Council,即事務處理性能委員會)有多種基準測試體系,在這裡我們使用了 TPC-H 數據集。使用 TPC-H 的主要目的是測試資料庫系統複雜查詢的響應時間,以此來評價特定查詢的決策支持能力。
Kyligence 公司研發了適用於 Kylin 的 SSB 和 TPC-H 數據集工具,並且包含了標準 SQL,源碼倉庫地址如下:
- https://github.com/Kyligence/ssb-kylin
- https://github.com/Kyligence/kylin-tpch
01
測試環境配置
Hadoop 集群:
- 4 個物理節點
- Yarn 隊列擁有 400G 記憶體和 128 個 CPU 核數
Kylin 3.0 使用的是 MapReduce 引擎。Kylin on Parquet 目前只支持內部定製版本的 Spark 引擎,定製版相對於社區版主要是做了性能方面的優化,其他方面與社區版 Spark 並沒有區別。
- Spark 源碼倉庫https://github.com/Kyligence/spark/tree/2.4.1-kylin-r3
- Spark 二進位包下載https://download-resource.s3.cn-north-1.amazonaws.com.cn/osspark/spark-2.4.1-os-kylin-r3
02
構建性能對比
Over SSB
下麵兩個圖分別表示構建時間和構建完成後占用存儲空間的對比。我們可以看到在 SSB 6000 萬和 9000 萬數據量下,新的構建引擎構建速度快了一倍,最終占用存儲空間也減少了接近一倍。
值得一提的是,Kylin on Parquet 最終構建的數據只包含 HDFS 上的數據,由於 Kylin on HBase cuboid 文件構建完成之後 HDFS 上的文件需要轉換為 HFile,而且為了 merge 準備,HDFS 上的數據預設是不會清除的,所以實際存儲還會多一倍空間;而使用 Parquet 後,只需要一份數據即可以用於查詢,也可以用於 segment 合併,所以總體對比,Kylin on Parquet 的占用空間大約只有 Kylin on HBase 存儲的 1/3 到 1/4 !
構建完成後前端頁面會顯示 Cube 的大小,如下圖所示:
△ Kylin on Parquet
△ Kylin 3.0
03
查詢性能對比
Kylin on Parquet 的查詢引擎會在第一次查詢的時候在 YARN 上創建一個常駐進程,專門用來處理查詢任務,所以第一次查詢會比較慢(初始化過程大約 20 秒),這裡的測試並沒有將第一次查詢時間統計在內。
最近一周,查詢引擎相容性的問題也得到了進一步的修複,目前大部分 SQL 查詢包括 CountDistinct, TopN, Percentile 等目前都已經能夠支持。
我們使用 SSB 數據集(9000萬行)和TPC-H(1200萬行)官方標準 SQL 進行查詢響應時間測試,查詢響應時間越低,查詢引擎性能表現越好。兩個數據集的標準查詢 SQL 可以在文章開始提到的 SSB 和 TPC-H 數據集工具倉庫中找到。
Over SSB
從下圖中我們可以看到對於 SSB 數據集, Kylin on Parquet 查詢響應要比 Kylin 3.0 的要慢,但是大部分的查詢還是能夠在 1 秒內返回。
Over TPC-H
因為 TPC-H 的主要目的是測試資料庫系統複雜查詢的響應時間,所以 TPC-H 數據集的 SQL 更加複雜,要求更高,從下圖中可以看到 Kylin on Parquet 對查詢複雜的 SQL 處理時間更快,具有明顯優勢。
04
總結
通過 Kylin on Parquet 和 Kylin 3.0 查詢構建引擎的性能對比數據我們能夠看到,Kylin on Parquet 的構建引擎性能有了很大的提升,構建時間和存儲空間都減少了接近一倍。從 SSB 數據集查詢對比結果來看,查詢引擎對於簡單的查詢請求和 Kylin 3.0 有一定差距,但是大部分還是能夠做到秒級響應。而對於 TPC-H 數據集測試使用的比較複雜的 SQL 來說,一般後計算會比較多,新的查詢引擎會有更好的性能表現。
目前, Kylin on Parquet 方案(瞭解詳情戳此處)還處在不斷完善的階段,歡迎大家來體驗。最後附上 GitHub 倉庫地址:https://github.com/Kyligence/kylin-on-parquet-v2.git。
大家有問題可以提 issue 和 pr,也歡迎大家加一下上圖的微信群,一起討論完善。