真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ApacheKylin與ClickHouse的區(qū)別是什么

今天小編給大家分享一下Apache Kylin與ClickHouse的區(qū)別是什么的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

十多年的黎川網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整黎川建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“黎川網(wǎng)站設(shè)計(jì)”,“黎川網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

Apache Kylin 和 ClickHouse 都是目前市場(chǎng)流行的大數(shù)據(jù) OLAP 引擎;Kylin 最初由 eBay 中國(guó)研發(fā)中心開(kāi)發(fā),2014 年開(kāi)源并貢獻(xiàn)給 Apache 軟件基金會(huì),憑借著亞秒級(jí)查詢的能力和超高的并發(fā)查詢能力,被許多大廠所采用,包括美團(tuán),滴滴,攜程,貝殼找房,騰訊,58同城等;

OLAP 領(lǐng)域這兩年炙手可熱的 ClickHouse,由俄羅斯搜索巨頭 Yandex 開(kāi)發(fā),于2016年開(kāi)源,典型用戶包括字節(jié)跳動(dòng)、新浪、騰訊等知名企業(yè)。

這兩種 OLAP 引擎有什么差異,各自有什么優(yōu)勢(shì),如何選擇 ?本文將嘗試從技術(shù)原理、存儲(chǔ)結(jié)構(gòu)、優(yōu)化方法和優(yōu)勢(shì)場(chǎng)景等方面,對(duì)比這兩種 OLAP 引擎, 為大家的技術(shù)選型提供一些參考。

01 技術(shù)原理

技術(shù)原理方面,我們主要從架構(gòu)和生態(tài)兩方面做個(gè)比較。

1.1 技術(shù)架構(gòu)

Kylin 是基于 Hadoop 的 MOLAP (Multi-dimensional OLAP) 技術(shù),核心技術(shù)是 OLAP Cube;與傳統(tǒng) MOLAP 技術(shù)不同,Kylin 運(yùn)行在 Hadoop 這個(gè)功能強(qiáng)大、擴(kuò)展性強(qiáng)的平臺(tái)上,從而可以支持海量 (TB到PB) 的數(shù)據(jù);它將預(yù)計(jì)算(通過(guò) MapReduce 或 Spark 執(zhí)行)好的多維 Cube 導(dǎo)入到 HBase 這個(gè)低延遲的分布式數(shù)據(jù)庫(kù)中,從而可以實(shí)現(xiàn)亞秒級(jí)的查詢響應(yīng);最近的 Kylin 4 開(kāi)始使用 Spark + Parquet 來(lái)替換 HBase,從而進(jìn)一步簡(jiǎn)化架構(gòu)。由于大量的聚合計(jì)算在離線任務(wù)(Cube 構(gòu)建)過(guò)程中已經(jīng)完成,所以執(zhí)行 SQL 查詢時(shí),它不需要再訪問(wèn)原始數(shù)據(jù),而是直接利用索引結(jié)合聚合結(jié)果再二次計(jì)算,性能比訪問(wèn)原始數(shù)據(jù)高百倍甚至千倍;由于 CPU 使用率低,它可以支持較高的并發(fā)量,尤其適合自助分析、固定報(bào)表等多用戶、交互式分析的場(chǎng)景。

ClickHouse 是基于 MPP 架構(gòu)的分布式 ROLAP (Relational OLAP)分析引擎,各節(jié)點(diǎn)職責(zé)對(duì)等,各自負(fù)責(zé)一部分?jǐn)?shù)據(jù)的處理(shared nothing),開(kāi)發(fā)了向量化執(zhí)行引擎,利用日志合并樹(shù)、稀疏索引與 CPU 的 SIMD(單指令多數(shù)據(jù) ,Single Instruction Multiple Data)等特性,充分發(fā)揮硬件優(yōu)勢(shì),達(dá)到高效計(jì)算的目的。因此當(dāng) ClickHouse 面對(duì)大數(shù)據(jù)量計(jì)算的場(chǎng)景,通常能達(dá)到 CPU 性能的極限。

  1. 2 技術(shù)生態(tài)

Kylin 采用 Java 編寫(xiě),充分融入 Hadoop 生態(tài)系統(tǒng),使用 HDFS 做分布式存儲(chǔ),計(jì)算引擎可選 MapReduce、Spark、Flink;存儲(chǔ)引擎可選 HBase、Parquet(結(jié)合 Spark)。源數(shù)據(jù)接入支持 Hive、Kafka、RDBMS 等,多節(jié)點(diǎn)協(xié)調(diào)依賴 Zookeeper;兼容 Hive 元數(shù)據(jù),Kylin 只支持 SELECT 查詢,schema 的修改等都需要在 Hive 中完成,然后同步到 Kylin;建模等操作通過(guò) Web UI 完成,任務(wù)調(diào)度通過(guò) Rest API 進(jìn)行,Web UI 上可以查看任務(wù)進(jìn)度。

ClickHouse 采用 C++ 編寫(xiě),自成一套體系,對(duì)第三方工具依賴少。支持較完整的 DDL 和 DML,大部分操作可以通過(guò)命令行結(jié)合 SQL 就可以完成;分布式集群依賴 Zookeper 管理,單節(jié)點(diǎn)不用依賴 Zookeper,大部分配置需要通過(guò)修改配置文件完成。

02 存儲(chǔ)

Kylin 采用 Hadoop 生態(tài)的 HBase 或 Parquet 做存儲(chǔ)結(jié)構(gòu),依靠 HBase 的 rowkey 索引或 Parquet 的 Row group 稀疏索引來(lái)做查詢提速,使用 HBase Region Server 或 Spark executor 做分布式并行計(jì)算。ClickHouse 自己管理數(shù)據(jù)存儲(chǔ),它的存儲(chǔ)特點(diǎn)包括:MergeTree 作主要的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)壓縮分塊,稀疏索引等。下面將針對(duì)兩者的引擎做詳細(xì)對(duì)比。

2.1 Kylin 的存儲(chǔ)結(jié)構(gòu)

Kylin 通過(guò)預(yù)聚合計(jì)算出多維 Cube 數(shù)據(jù),查詢的時(shí)候根據(jù)查詢條件,動(dòng)態(tài)選擇最優(yōu)的 Cuboid (類(lèi)似于物化視圖),這會(huì)極大減小 CPU 計(jì)算量和 IO 的讀取量。

在 Cube 構(gòu)建過(guò)程中,Kylin 將維度值進(jìn)行一定的編碼壓縮如字典編碼,力圖最小化數(shù)據(jù)存儲(chǔ);由于 Kylin 的存儲(chǔ)引擎和構(gòu)建引擎都是可插拔式的,對(duì)于不同的存儲(chǔ)引擎,存儲(chǔ)結(jié)構(gòu)也有所差異。

HBase 存儲(chǔ)

在使用 HBase 作為存儲(chǔ)引擎的情況下,在預(yù)計(jì)算時(shí)會(huì)對(duì)各個(gè)維度進(jìn)行編碼,保證維度值長(zhǎng)度固定,并且在生成 hfile 時(shí)把計(jì)算結(jié)果中的維度拼接成 rowkey,聚合值作為 value。維度的順序決定 rowkey 的設(shè)計(jì),也會(huì)直接影響查詢的效率。

Parquet 存儲(chǔ)引擎

在使用 Parquet 作為存儲(chǔ)格式時(shí)則會(huì)直接存儲(chǔ)維度值和聚合值,而不需要進(jìn)行編碼和 rowkey 拼接。在存成 Parquet 之前,計(jì)算引擎會(huì)根據(jù)維度對(duì)計(jì)算結(jié)果進(jìn)行排序,維度字段越是靠前,那么在其上的過(guò)濾效率也就越高。另外在同一個(gè)分區(qū)下 shard 的數(shù)量和 parquet 文件的 row group 數(shù)量也同樣會(huì)影響查詢的效率。

2.2 ClickHouse 的存儲(chǔ)結(jié)構(gòu)

ClickHouse 在創(chuàng)建表結(jié)構(gòu)的時(shí)候一般要求用戶指定分區(qū)列。采用數(shù)據(jù)壓縮和純粹的列式存儲(chǔ)技術(shù), 使用 Mergetree 對(duì)每一列單獨(dú)存儲(chǔ)并壓縮分塊,

同時(shí)數(shù)據(jù)總會(huì)以片段的形式寫(xiě)入磁盤(pán),當(dāng)滿足一定條件后 ClickHouse 會(huì)通過(guò)后臺(tái)線程定期合并這些數(shù)據(jù)片段。

當(dāng)數(shù)據(jù)量持續(xù)增大,ClickHouse,會(huì)針對(duì)分區(qū)目錄的數(shù)據(jù)進(jìn)行合并,提高數(shù)據(jù)掃描的效率。

同時(shí) ClickHouse 針對(duì)每個(gè)數(shù)據(jù)塊,提供稀疏索引。在處理查詢請(qǐng)求的時(shí)候,就能夠利用稀疏索引,減少數(shù)據(jù)掃描起到加速作用。

03 優(yōu)化方法

Kylin 和 ClickHouse 都是大數(shù)據(jù)處理系統(tǒng),當(dāng)數(shù)據(jù)量級(jí)持續(xù)增大的時(shí)候,采用合適的優(yōu)化方法往往能事半功倍,極大地降低查詢響應(yīng)時(shí)間,減少存儲(chǔ)空間,提升查詢性能。由于二者的計(jì)算系統(tǒng)和存儲(chǔ)系統(tǒng)不同,因此采用的優(yōu)化方式也不一樣,下一小節(jié)將著重分析 Kylin 和 ClickHouse 兩者的優(yōu)化方法。

3.1 Kylin 的優(yōu)化方法

Kylin 的核心原理是預(yù)計(jì)算,正如第一小節(jié)技術(shù)原理所說(shuō):Kylin 的計(jì)算引擎用 Apache Spark,MapReduce;存儲(chǔ)用 HBase,Parquet;SQL 解析和后計(jì)算用 Apache Calcite。Kylin 的核心技術(shù)是研發(fā)了一系列的優(yōu)化方法,來(lái)幫助解決維度爆炸和掃描數(shù)據(jù)過(guò)多的問(wèn)題,這些方法包括:設(shè)置聚合組,設(shè)置聯(lián)合維度,設(shè)置衍生維度,設(shè)置維度表快照,設(shè)置 Rowkey 順序,設(shè)置 shard by 列等。

設(shè)置聚合組:通過(guò)聚合組進(jìn)行剪枝,減少不必要的預(yù)計(jì)算組合; 設(shè)置聯(lián)合維度:將經(jīng)常成對(duì)出現(xiàn)的維度組合放在一起,減少不必要的預(yù)計(jì)算; 設(shè)置衍生維度:將能通過(guò)其他維度計(jì)算出來(lái)的維度(例如年,月,日能通過(guò)日期計(jì)算出來(lái))設(shè)置為衍生維度,減少不必要的預(yù)計(jì)算; 設(shè)置維度表快照:放入內(nèi)存現(xiàn)算,減少占用的存儲(chǔ)空間; 字典編碼:減少占用的存儲(chǔ)空間; RowKey 編碼,設(shè)置 shard by 列:通過(guò)減少數(shù)據(jù)掃描的行數(shù),加速查詢效率

3.2 ClickHouse 優(yōu)化方法

MPP 架構(gòu)的系統(tǒng)最常見(jiàn)的優(yōu)化方式就是分庫(kù)分表,類(lèi)似的,ClickHouse 最常見(jiàn)的優(yōu)化方式包括設(shè)置分區(qū)和分片,此外 ClickHouse 也包括一些特有的引擎??偨Y(jié)歸納下來(lái),這些優(yōu)化方法包括:

用平表結(jié)構(gòu),代替多表 Join,避免昂貴的 Join 操作和數(shù)據(jù)混洗 設(shè)置合理的分區(qū)鍵,排序鍵,二級(jí)索引,減少數(shù)據(jù)掃描 搭建 ClickHouse 分布式集群增加分片和副本,添加計(jì)算資源 結(jié)合物化視圖,適當(dāng)采用 SummingMergetree,AggregateMergetree 等以預(yù)計(jì)算為核心的引擎

隨著后面性能和并發(fā)的要求越來(lái)越高,對(duì)機(jī)器的資源消耗也越來(lái)越大。在 ClickHouse 的官方網(wǎng)站文檔中建議 ClickHouse 的并發(fā)數(shù)不超過(guò) 100,當(dāng)并發(fā)要求高,為減少 ClickHouse 的資源消耗,可以結(jié)合 ClickHouse 的一些特殊引擎進(jìn)行優(yōu)化。

特殊引擎中最常用的是 SummingMergetree 和 AggregateMergetree,這兩種數(shù)據(jù)結(jié)構(gòu)是從 Mergetree 中派生而來(lái),本質(zhì)是通過(guò)預(yù)計(jì)算將需要查詢的數(shù)據(jù)提前算出來(lái),保存在 ClickHouse 中,這樣查詢的時(shí)候就能進(jìn)一步減少資源消耗。

從使用原理來(lái)看 SummingMergetree 和 AggregateMergetree 與 Kylin 的Cube有異曲同工之妙。但是當(dāng)維度過(guò)多的時(shí)候,管理很多個(gè)物化視圖是不現(xiàn)實(shí)的做法,存在管理成本高等問(wèn)題。與 ClickHouse 不同,Kylin 提供一系列簡(jiǎn)單直接的優(yōu)化方法,來(lái)避免維度爆炸的問(wèn)題。

可以看到,ClickHouse 和 Kylin 都提供一些方法減少存儲(chǔ)占用的空間,降低查詢時(shí)掃描數(shù)據(jù)的行數(shù)。通常認(rèn)為:對(duì) ClickHouse 和 Kylin 進(jìn)行適當(dāng)優(yōu)化,都能在大數(shù)據(jù)量場(chǎng)景下滿足業(yè)務(wù)需求。ClickHouse 采用 MPP 現(xiàn)算,Kylin 采用預(yù)計(jì)算,由于兩者采用的技術(shù)路線不同因此相應(yīng)優(yōu)勢(shì)場(chǎng)景也不同。

04 優(yōu)勢(shì)場(chǎng)景

Kylin 因?yàn)椴捎妙A(yù)計(jì)算技術(shù), 適合有固定模式的聚合查詢,例如:SQL 中的 join、group by、where條件模式比較固定等,數(shù)據(jù)量越大,使用 Kylin 的優(yōu)勢(shì)越明顯;特別的,Kylin 在去重(count distinct)、Top N、Percentile 等場(chǎng)景的優(yōu)勢(shì)尤為巨大,大量使用在 Dashboard、各類(lèi)報(bào)表、大屏展示、流量統(tǒng)計(jì)、用戶行為分析等場(chǎng)景。美團(tuán)、極光、貝殼找房等使用 Kylin 構(gòu)建了他們的數(shù)據(jù)服務(wù)平臺(tái),每日提供高達(dá)數(shù)百萬(wàn)到數(shù)千萬(wàn)次的查詢服務(wù),且大部分查詢可以在 2 - 3 秒內(nèi)完成。這樣的高并發(fā)場(chǎng)景幾乎沒(méi)有更好的替代方案。

ClickHouse 因?yàn)椴捎?MPP 架構(gòu)現(xiàn)場(chǎng)計(jì)算能力很強(qiáng),當(dāng)查詢請(qǐng)求比較靈活,或者有明細(xì)查詢需求,并發(fā)量不大的時(shí)候比較適用。場(chǎng)景包括:非常多列且 where 條件隨意組合的用戶標(biāo)簽篩選,并發(fā)量不大的復(fù)雜即席查詢等。如果數(shù)據(jù)量和訪問(wèn)量較大,需要部署分布式 ClickHouse 集群,這時(shí)候?qū)\(yùn)維的挑戰(zhàn)會(huì)比較高。

如果有些查詢非常靈活,但不經(jīng)常查,采用現(xiàn)算就比較節(jié)省資源,由于查詢量少,即使每個(gè)查詢消耗計(jì)算資源大整體來(lái)說(shuō)也可以是劃算的。如果有些查詢有固定的模式,查詢量較大就更適合 Kylin,因?yàn)椴樵兞看?,利用大的?jì)算資源將計(jì)算結(jié)果保存,前期的計(jì)算成本能夠攤薄每個(gè)查詢中,因此是最經(jīng)濟(jì)的。

05 總結(jié)

本文就技術(shù)原理,存儲(chǔ)結(jié)構(gòu),優(yōu)化方法及優(yōu)勢(shì)場(chǎng)景,對(duì) Kylin 和 ClickHouse 進(jìn)行了對(duì)比。

技術(shù)原理方面:ClickHouse 采用 MPP + Shared nothing 架構(gòu),查詢比較靈活,安裝部署和操作簡(jiǎn)便,由于數(shù)據(jù)存儲(chǔ)在本地,擴(kuò)容和運(yùn)維相對(duì)較麻煩;Kylin 采用 MOLAP 預(yù)計(jì)算,基于 Hadoop,計(jì)算與存儲(chǔ)分離(特別是使用 Parquet 存儲(chǔ)后)、Shared storage 的架構(gòu),更適合場(chǎng)景相對(duì)固定但數(shù)據(jù)體量很大的場(chǎng)景,基于 Hadoop 便于與現(xiàn)有大數(shù)據(jù)平臺(tái)融合,也便于水平伸縮(特別是從 HBase 升級(jí)為 Spark + Parquet 后)。

存儲(chǔ)結(jié)構(gòu)方面:ClickHouse 存儲(chǔ)明細(xì)數(shù)據(jù),特點(diǎn)包括MergeTree 存儲(chǔ)結(jié)構(gòu)和稀疏索引,在明細(xì)之上可以進(jìn)一步創(chuàng)建聚合表來(lái)加速性能;Kylin 采用預(yù)聚合以及 HBase 或 Parquet 做存儲(chǔ),物化視圖對(duì)查詢透明,聚合查詢非常高效但不支持明細(xì)查詢。

優(yōu)化方法方面:ClickHouse 包括分區(qū)分片和二級(jí)索引等優(yōu)化手段, Kylin 采用聚合組、聯(lián)合維度、衍生維度、層級(jí)維度,以及 rowkey 排序等優(yōu)化手段

優(yōu)勢(shì)場(chǎng)景方面:ClickHouse 通常適合幾億~幾十億量級(jí)的靈活查詢(更多量級(jí)也支持只是集群運(yùn)維難度會(huì)加大)。Kylin 則更適合幾十億~百億以上的相對(duì)固定的查詢場(chǎng)景。

下圖是一個(gè)多方面的匯總:

綜合下來(lái), Kylin 和 ClickHouse 有各種使用的領(lǐng)域和場(chǎng)景 ?,F(xiàn)代數(shù)據(jù)分析領(lǐng)域沒(méi)有一種能適應(yīng)所有場(chǎng)景的分析引擎。企業(yè)需要根據(jù)自己的業(yè)務(wù)場(chǎng)景,選擇合適的工具解決具體問(wèn)題。

以上就是“Apache Kylin與ClickHouse的區(qū)別是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


分享題目:ApacheKylin與ClickHouse的區(qū)別是什么
路徑分享:http://weahome.cn/article/gsgdcj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部