大數據OLAP系統(2)

開源大數據OLAP組件,可以分爲MOLAP和ROLAP兩類。ROLAP中又可細分爲MPP數據庫和SQL引擎兩類。對於SQL引擎又可以再細分爲基於MPP架構的SQL引擎和基於通用計算框架的SQL引擎:

  1. MOLAP一般對數據存儲有優化,並且進行部分預計算,因此查詢性能最高。但通常對查詢靈活性有限制。
  2. MPP數據庫是個完整的數據庫,通常數據需要導入其中才能完成OLAP功能。MPP數據庫在數據入庫時對數據分佈可以做優化,雖然入庫效率有一定下降,但是對後期查詢性能的提高有很大幫助。MPP數據庫可以提供靈活的即席查詢能力,但一般對查詢數據量有一定限制,無法支撐特別大的數據量的查詢。
  3. SQL引擎只提供SQL執行的能力,本身一般不負責數據存儲,通常可以對接多種數據儲存,如HDFS、HBase、MySQL等。有的還支持聯邦查詢能力,可以對多個異構數據源進行聯合分析。SQL引擎中,基於MPP架構的SQL引擎,一般對在線查詢場景有特殊優化,所以端到端查詢性能一般要高於基於通用計算框架的SQL引擎;但是在容錯性和數據量方面又會遜於基於通用計算框架的SQL引擎。

總之,可以說沒有一個OLAP系統能同時在處理規模,靈活性和性能這三個方面做到完美,用戶需要基於自己的需求進行取捨和選型。

對比差異

  1. SparkSQL是Hadoop中另一個著名的SQL引擎,它以Spark作爲底層計算框架,Spark使用RDD作爲分佈式程序的工作集合,它提供一種分佈式共享內存的受限形式。在分佈式共享內存系統中,應用可以向全局地址空間的任意位置進行讀寫作,而RDD是隻讀的,對其只能進行創建、轉化和求值等作。這種內存操作大大提高了計算速度。SparkSql的性能相對其他的組件要差一些,多表單表查詢性能都不突出。
  2. Impala官方宣傳其計算速度是一大優點,在實際測試中我們也發現它的多表查詢性能和presto差不多,但是單表查詢方面卻不如presto好。而且Impala有很多不支持的地方,例如:不支持update、delete操作,不支持Date數據類型,不支持ORC文件格式等等,所以我們查詢時採用parquet格式進行查詢,而且Impala在查詢時佔用的內存很大。
  3. Presto綜合性能比起來要比其餘組件好一些,無論是查詢性能還是支持的數據源和數據格式方面都要突出一些,在單表查詢時性能靠前,多表查詢方面性能也很突出。由於Presto是完全基於內存的並行計算,所以presto在查詢時佔用的內存也不少,但是發現要比Impala少一些,比如多表join需要很大的內存,Impala佔用的內存比presto要多。
  4. HAWQ 吸收了先進的基於成本的 SQL 查詢優化器,自動生成執行計劃,可優化使用hadoop 集羣資源。HAWQ 採用 Dynamic pipelining 技術解決這一關鍵問題。Dynamic pipelining 是一種並行數據流框架,利用線性可擴展加速Hadoop查詢,數據直接存儲在HDFS上,並且其SQL查詢優化器已經爲基於HDFS的文件系統性能特徵進行過細緻的優化。但是我們發現HAWQ在多表查詢時比Presto、Impala差一些;而且不適合單表的複雜聚合操作,單表測試性能方面要比其餘四種組件差很多,hawq環境搭建也遇到了諸多問題。
  5. ClickHouse 作爲目前所有開源MPP計算框架中計算速度最快的,它在做多列的表,同時行數很多的表的查詢時,性能是很讓人興奮的,但是在做多表的join時,它的性能是不如單寬表查詢的。性能測試結果表明ClickHouse在單表查詢方面表現出很大的性能優勢,但是在多表查詢中性能卻比較差,不如presto、impala、hawq的效果好。
  6. GreenPlum作爲關係型數據庫產品,它的特點主要就是查詢速度快,數據裝載速度快,批量DML處理快。而且性能可以隨着硬件的添加,呈線性增加,擁有非常良好的可擴展性。因此,它主要適用於面向分析的應用。比如構建企業級ODS/EDW,或者數據集市等,GREENPLUM都是不錯的選擇。

參考
https://cloud.tencent.com/developer/article/1765580

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