技術(shù)選型 | OLAP大數(shù)據(jù)技術(shù)哪家強(qiáng)?

?
隨著大數(shù)據(jù)組件越來越多,很多組件都是為OLAP數(shù)據(jù)服務(wù)的,什么組件或者組件組合最合適可能是我們關(guān)注的問題。本文大體分析業(yè)內(nèi)常見的組件特點(diǎn),給大家挑選組件提供借鑒。
OLAP提供的服務(wù)
? Lambda架構(gòu)的核心理念是“流批一體化”,因?yàn)殡S著機(jī)器性能和數(shù)據(jù)框架的不斷完善,用戶其實(shí)不關(guān)心底層是如何運(yùn)行的,批處理也好,流式處理也罷,能按照統(tǒng)一的模型返回結(jié)果就可以了,這就是Lambda架構(gòu)誕生的原因?,F(xiàn)在很多應(yīng)用,例如Spark和Flink,都支持這種結(jié)構(gòu),也就是數(shù)據(jù)進(jìn)入平臺(tái)后,可以選擇批處理運(yùn)行,也可以選擇流式處理運(yùn)行,但不管怎樣,一致性都是相同的。
OLAP服務(wù)工具
01
01
Kylin
??? Kylin的主要特點(diǎn)是預(yù)計(jì)算,提前計(jì)算好各個(gè)cube,這樣的優(yōu)點(diǎn)是查詢快速,秒級(jí)延遲;缺點(diǎn)也非常明顯,靈活性不足,無法做一些探索式的,關(guān)聯(lián)性的數(shù)據(jù)分析。
????適合的場(chǎng)景也是比較固定的,場(chǎng)景清晰的地方。

02
01
ClickHouse
??? Clickhouse由俄羅斯yandex公司開發(fā)。專為在線數(shù)據(jù)分析而設(shè)計(jì)。
Clickhouse最大的特點(diǎn)首先是快,為了快采用了列式儲(chǔ)存,列式儲(chǔ)存更好的支持壓縮,壓縮后的數(shù)據(jù)傳輸量變小,所以更快;同時(shí)支持分片,支持分布式執(zhí)行,支持SQL。
??? ClickHouse很輕量級(jí),支持?jǐn)?shù)據(jù)壓縮和最終數(shù)據(jù)一致性,其數(shù)據(jù)量級(jí)在PB級(jí)別。
? ? 另外Clickhouse不是為關(guān)聯(lián)分析而生,所以多表關(guān)聯(lián)支持的不太好。
????同樣Clickhouse不能修改或者刪除數(shù)據(jù),僅能用于批量刪除或修改。沒有完整的事務(wù)支持,不支持二級(jí)索引等等,缺點(diǎn)也非常明顯。
? ? 與Kylin相比ClickHouse更加的靈活,sql支持的更好,但是相比Kylin,ClickHouse不支持大并發(fā),也就是不能很多訪問同時(shí)在線。
????總之ClickHouse用于在線數(shù)據(jù)分析,支持功能簡(jiǎn)單。CPU 利用率高,速度極快。最好的場(chǎng)景用于行為統(tǒng)計(jì)分析。

03
01
Hive
??? Hive這個(gè)工具,大家一定很熟悉,大數(shù)據(jù)倉(cāng)庫(kù)的首選工具??梢詫⒔Y(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供完整的sql查詢功能。
????主要功能是可以將sql語句轉(zhuǎn)換為相對(duì)應(yīng)的MapReduce任務(wù)進(jìn)行運(yùn)行,這樣可能處理海量的數(shù)據(jù)批量,
??? Hive與HDFS結(jié)合緊密,在大數(shù)據(jù)開始初期,提供一種直接使用sql就能訪問HDFS的方案,擺脫了寫MapReduce任務(wù)的方式,極大的降低了大數(shù)據(jù)的門檻。
? ?當(dāng)然Hive的缺點(diǎn)非常明顯,定義的是分鐘級(jí)別的查詢延遲,估計(jì)都是在比較理想的情況。但是作為數(shù)據(jù)倉(cāng)庫(kù)的每日批量工具,的確是一個(gè)穩(wěn)定合格的產(chǎn)品。

04
01
Presto
??? Presto極大的改進(jìn)了Hive的查詢速度,而且Presto 本身并不存儲(chǔ)數(shù)據(jù),但是可以接入多種數(shù)據(jù)源,并且支持跨數(shù)據(jù)源的級(jí)聯(lián)查詢,支持包括復(fù)雜查詢、聚合、連接等等。
??? Presto沒有使用MapReduce,它是通過一個(gè)定制的查詢和執(zhí)行引擎來完成的。它的所有的查詢處理是在內(nèi)存中,這也是它的性能很高的一個(gè)主要原因。
??? Presto由于是基于內(nèi)存的,缺點(diǎn)可能是多張大表關(guān)聯(lián)操作時(shí)易引起內(nèi)存溢出錯(cuò)誤。
????另外Presto不支持OLTP的場(chǎng)景,所以不要把Presto當(dāng)做數(shù)據(jù)庫(kù)來使用。
??? Presto相比ClickHouse優(yōu)點(diǎn)主要是多表join效果好。相比ClickHouse的支持功能簡(jiǎn)單,場(chǎng)景支持單一,Presto支持復(fù)雜的查詢,應(yīng)用范圍更廣。

05
01
Impala
??? Impala是Cloudera 公司推出,提供對(duì) HDFS、Hbase 數(shù)據(jù)的高性能、低延遲的交互式 SQL 查詢功能。
??? Impala 使用 Hive的元數(shù)據(jù), 完全在內(nèi)存中計(jì)算。是CDH 平臺(tái)首選的 PB 級(jí)大數(shù)據(jù)實(shí)時(shí)查詢分析引擎。
??? Impala 的缺點(diǎn)也很明顯,首先嚴(yán)重依賴Hive,而且穩(wěn)定性也稍差,元數(shù)據(jù)需要單獨(dú)的mysql/pgsql來存儲(chǔ),對(duì)數(shù)據(jù)源的支持比較少,很多nosql是不支持的。但是,估計(jì)是cloudera的國(guó)內(nèi)市場(chǎng)推廣做的不錯(cuò),Impala在國(guó)內(nèi)的市場(chǎng)不錯(cuò)。

06
01
SparkSQL
??? SparkSQL的前身是Shark,它將 SQL 查詢與 Spark 程序無縫集成,可以將結(jié)構(gòu)化數(shù)據(jù)作為 Spark 的 RDD 進(jìn)行查詢。
??? SparkSQL后續(xù)不再受限于Hive,只是兼容Hive。
??? SparkSQL提供了sql訪問和API訪問的接口。
????支持訪問各式各樣的數(shù)據(jù)源,包括Hive, Avro, Parquet, ORC, JSON, and JDBC。

07
01
Drill?
??? Drill好像國(guó)內(nèi)使用的很少,根據(jù)定義,Drill是一個(gè)低延遲的分布式海量數(shù)據(jù)交互式查詢引擎,支持多種數(shù)據(jù)源,包括hadoop,NoSQL存儲(chǔ)等等。
? ? 除了支持多種的數(shù)據(jù)源,Drill跟BI工具集成比較好。

08
01
Druid?
??? Druid是專為海量數(shù)據(jù)集上的做高性能 OLAP而設(shè)計(jì)的數(shù)據(jù)存儲(chǔ)和分析系統(tǒng)。
??? Druid 的架構(gòu)是 Lambda 架構(gòu),分成實(shí)時(shí)層和批處理層。
??? Druid的核心設(shè)計(jì)結(jié)合了數(shù)據(jù)倉(cāng)庫(kù),時(shí)間序列數(shù)據(jù)庫(kù)和搜索系統(tǒng)的思想,以創(chuàng)建一個(gè)統(tǒng)一的系統(tǒng),用于針對(duì)各種用例的實(shí)時(shí)分析。Druid將這三個(gè)系統(tǒng)中每個(gè)系統(tǒng)的關(guān)鍵特征合并到其接收層,存儲(chǔ)格式,查詢層和核心體系結(jié)構(gòu)中。
????目前 Druid 的去重都是非精確的,Druid 適合處理星型模型的數(shù)據(jù),不支持關(guān)聯(lián)操作。也不支持?jǐn)?shù)據(jù)的更新。
? ? Druid最大的優(yōu)點(diǎn)還是支持實(shí)時(shí)與查詢功能,解約了很多開發(fā)工作。

09
01
Kudu
??? kudu是一套完全獨(dú)立的分布式存儲(chǔ)引擎,很多設(shè)計(jì)概念上借鑒了HBase,但是又跟HBase不同,不需要HDFS,通過raft做數(shù)據(jù)復(fù)制;分片策略支持keyrange和hash等多種。
????數(shù)據(jù)格式在parquet基礎(chǔ)上做了些修改,支持二級(jí)索引,更像一個(gè)列式存儲(chǔ),而不是HBase schema-free的kv方式。
??? kudu也是cloudera主導(dǎo)的項(xiàng)目,跟Impala結(jié)合比較好,通過impala可以支持update操作。
??? kudu相對(duì)于原有parquet和ORC格式主要還是做增量更新的。

10
01
Hbase
??? Hbase使用的很廣,更多的是作為一個(gè)KV數(shù)據(jù)庫(kù)來使用,查詢的速度很快。

11
01
Hawq
??? Hawq是一個(gè)Hadoop原生大規(guī)模并行SQL分析引擎,Hawq采用 MPP 架構(gòu),改進(jìn)了針對(duì) Hadoop 的基于成本的查詢優(yōu)化器。
????除了能高效處理本身的內(nèi)部數(shù)據(jù),還可通過 PXF 訪問 HDFS、Hive、HBase、JSON 等外部數(shù)據(jù)源。HAWQ全面兼容 SQL 標(biāo)準(zhǔn),還可用 SQL 完成簡(jiǎn)單的數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)。無論是功能特性,還是性能表現(xiàn),HAWQ 都比較適用于構(gòu)建 Hadoop 分析型數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用。
