本文分享自微信公衆號 - Java大數據與數據倉庫mysql
導讀 :以前咱們分享過一篇BI技術選型文章,頗受好評,今天咱們再給你們分享一下OLAP技術選型 ,follow me。sql
隨着大數據組件愈來愈多,不少組件都是爲OLAP數據服務的,什麼組件或者組件組合最合適多是咱們關注的問題。本文大致分析業內常見的組件特色,給你們挑選組件提供借鑑。數據庫
OLAP提供的服務微信
Lambda架構的核心理念是「流批一體化」,由於隨着機器性能和數據框架的不斷完善,用戶其實不關心底層是如何運行的,批處理也好,流式處理也罷,能按照統一的模型返回結果就能夠了,這就是Lambda架構誕生的緣由。如今不少應用,例如Spark和Flink,都支持這種結構,也就是數據進入平臺後,能夠選擇批處理運行,也能夠選擇流式處理運行,但無論怎樣,一致性都是相同的。架構
OLAP服務工具併發
01框架
01機器學習
Kylinnosql
Kylin的主要特色是預計算,提早計算好各個cube,這樣的優勢是查詢快速,秒級延遲;缺點也很是明顯,靈活性不足,沒法作一些探索式的,關聯性的數據分析。分佈式
適合的場景也是比較固定的,場景清晰的地方。
02
01
ClickHouse
Clickhouse由俄羅斯yandex公司開發。專爲在線數據分析而設計。
Clickhouse最大的特色首先是快,爲了快採用了列式儲存,列式儲存更好的支持壓縮,壓縮後的數據傳輸量變小,因此更快;同時支持分片,支持分佈式執行,支持SQL。
ClickHouse很輕量級,支持數據壓縮和最終數據一致性,其數據量級在PB級別。
另外Clickhouse不是爲關聯分析而生,因此多表關聯支持的不太好。
一樣Clickhouse不能修改或者刪除數據,僅能用於批量刪除或修改。沒有完整的事務支持,不支持二級索引等等,缺點也很是明顯。
與Kylin相比ClickHouse更加的靈活,sql支持的更好,可是相比Kylin,ClickHouse不支持大併發,也就是不能不少訪問同時在線。
總之ClickHouse用於在線數據分析,支持功能簡單。CPU 利用率高,速度極快。最好的場景用於行爲統計分析。
03
01
Hive
Hive這個工具,你們必定很熟悉,大數據倉庫的首選工具。能夠將結構化的數據文件映射爲一張數據庫表,並提供完整的sql查詢功能。
主要功能是能夠將sql語句轉換爲相對應的MapReduce任務進行運行,這樣可能處理海量的數據批量,
Hive與HDFS結合緊密,在大數據開始初期,提供一種直接使用sql就能訪問HDFS的方案,擺脫了寫MapReduce任務的方式,極大的下降了大數據的門檻。
固然Hive的缺點很是明顯,定義的是分鐘級別的查詢延遲,估計都是在比較理想的狀況。可是做爲數據倉庫的每日批量工具,的確是一個穩定合格的產品。
04
01
Presto
Presto極大的改進了Hive的查詢速度,並且Presto 自己並不存儲數據,可是能夠接入多種數據源,而且支持跨數據源的級聯查詢,支持包括複雜查詢、聚合、鏈接等等。
Presto沒有使用MapReduce,它是經過一個定製的查詢和執行引擎來完成的。它的全部的查詢處理是在內存中,這也是它的性能很高的一個主要緣由。
Presto因爲是基於內存的,缺點多是多張大表關聯操做時易引發內存溢出錯誤。
另外Presto不支持OLTP的場景,因此不要把Presto當作數據庫來使用。
Presto相比ClickHouse優勢主要是多表join效果好。相比ClickHouse的支持功能簡單,場景支持單一,Presto支持複雜的查詢,應用範圍更廣。
05
01
Impala
Impala是Cloudera 公司推出,提供對 HDFS、Hbase 數據的高性能、低延遲的交互式 SQL 查詢功能。
Impala 使用 Hive的元數據, 徹底在內存中計算。是CDH 平臺首選的 PB 級大數據實時查詢分析引擎。
Impala 的缺點也很明顯,首先嚴重依賴Hive,並且穩定性也稍差,元數據須要單獨的mysql/pgsql來存儲,對數據源的支持比較少,不少nosql是不支持的。可是,估計是cloudera的國內市場推廣作的不錯,Impala在國內的市場不錯。
06
01
SparkSQL
SparkSQL的前身是Shark,它將 SQL 查詢與 Spark 程序無縫集成,能夠將結構化數據做爲 Spark 的 RDD 進行查詢。
SparkSQL後續再也不受限於Hive,只是兼容Hive。
SparkSQL提供了sql訪問和API訪問的接口。
支持訪問各式各樣的數據源,包括Hive, Avro, Parquet, ORC, JSON, and JDBC。
07
01
**Drill **
Drill好像國內使用的不多,根據定義,Drill是一個低延遲的分佈式海量數據交互式查詢引擎,支持多種數據源,包括hadoop,NoSQL存儲等等。
除了支持多種的數據源,Drill跟BI工具集成比較好。
08
01
**Druid **
Druid是專爲海量數據集上的作高性能 OLAP而設計的數據存儲和分析系統。
Druid 的架構是 Lambda 架構,分紅實時層和批處理層。
Druid的核心設計結合了數據倉庫,時間序列數據庫和搜索系統的思想,以建立一個統一的系統,用於針對各類用例的實時分析。Druid將這三個系統中每一個系統的關鍵特徵合併到其接收層,存儲格式,查詢層和核心體系結構中。
目前 Druid 的去重都是非精確的,Druid 適合處理星型模型的數據,不支持關聯操做。也不支持數據的更新。
Druid最大的優勢仍是支持實時與查詢功能,解約了不少開發工做。
09
01
Kudu
kudu是一套徹底獨立的分佈式存儲引擎,不少設計概念上借鑑了HBase,可是又跟HBase不一樣,不須要HDFS,經過raft作數據複製;分片策略支持keyrange和hash等多種。
數據格式在parquet基礎上作了些修改,支持二級索引,更像一個列式存儲,而不是HBase schema-free的kv方式。
kudu也是cloudera主導的項目,跟Impala結合比較好,經過impala能夠支持update操做。
kudu相對於原有parquet和ORC格式主要仍是作增量更新的。
10
01
Hbase
Hbase使用的很廣,更多的是做爲一個KV數據庫來使用,查詢的速度很快。
11
01
Hawq
Hawq是一個Hadoop原生大規模並行SQL分析引擎,Hawq採用 MPP 架構,改進了針對 Hadoop 的基於成本的查詢優化器。
除了能高效處理自己的內部數據,還可經過 PXF 訪問 HDFS、Hive、HBase、JSON 等外部數據源。HAWQ全面兼容 SQL 標準,還可用 SQL 完成簡單的數據挖掘和機器學習。不管是功能特性,仍是性能表現,HAWQ 都比較適用於構建 Hadoop 分析型數據倉庫應用。
加我微信:ddxygq,來一場朋友圈的點贊之交!
猜你喜歡
本文分享自微信公衆號 - Java大數據與數據倉庫(ikeguang2)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。