一. 概述
隨著物聯(lián)網(wǎng) IOT 時代的來臨,IOT 設(shè)備感知和報警存儲的數(shù)據(jù)越來越大湃崩,有用的價值數(shù)據(jù)需要數(shù)據(jù)分析師去分析荧降。大數(shù)據(jù)分析成了非常重要的環(huán)節(jié)。當(dāng)然近兩年開啟的開源大潮攒读,為大數(shù)據(jù)分析工程師提供了十分富余的工具朵诫。但這同時也增加了開發(fā)者選擇合適的工具的難度,尤其對于新入行的開發(fā)者來說薄扁。學(xué)習(xí)成本剪返,框架的多樣化和復(fù)雜度成了很大的難題废累。例如 Kafka,Hdfs,Spark,Hive 等等組合才能產(chǎn)生最后的分析結(jié)果。把各種開源框架脱盲、工具邑滨、庫、平臺人工整合到一起所需工作之復(fù)雜钱反,是大數(shù)據(jù)領(lǐng)域開發(fā)和數(shù)據(jù)分析師常有的抱怨之一掖看,也是他們支持大數(shù)據(jù)分析平臺簡單化和統(tǒng)一化的首要原因。
二.ClickHouse 發(fā)展歷史
Yandex 在 2016 年 6 月 15 日開源了一個數(shù)據(jù)分析的數(shù)據(jù)庫面哥,名字叫做 ClickHouse哎壳,這對保守俄羅斯人來說是個特大事。更讓人驚訝的是幢竹,這個列式存儲數(shù)據(jù)庫的跑分要超過很多流行的商業(yè) MPP 數(shù)據(jù)庫軟件耳峦,例如 Vertica。如果你沒有聽過 Vertica焕毫,那你一定聽過 Michael Stonebraker蹲坷,2014 年圖靈獎的獲得者,PostgreSQL 和 Ingres 發(fā)明者(Sybase 和 SQL Server 都是繼承 Ingres 而來的), Paradigm4 和 SciDB 的創(chuàng)辦者邑飒。Michael Stonebraker 于 2005 年創(chuàng)辦 Vertica 公司循签,后來該公司被 HP 收購,HP Vertica 成為 MPP 列式存儲商業(yè)數(shù)據(jù)庫的高性能代表疙咸,F(xiàn)acebook 就購買了 Vertica 數(shù)據(jù)用于用戶行為分析县匠。
三.ClickHouse 支持特性剖析
在看 ClickHouse 運行場景之前,架構(gòu)師或開發(fā)人員必須要了解技術(shù)的功能特性以及弊端撒轮。只有”知己知彼”才可以”百戰(zhàn)不殆”乞旦,接下來我們看一下 ClickHouse 的具體特點。我們來看看其中的一些功能:
?1. 真正的面向列的 DBMS
在一個真正的面向列的 DBMS 中题山,沒有任何“垃圾”存儲在值中兰粉。例如,必須支持定長數(shù)值顶瞳,以避免在數(shù)值旁邊存儲長度“數(shù)字”玖姑。例如,十億個 UInt8 類型的值實際上應(yīng)該消耗大約 1 GB 的未壓縮磁盤空間慨菱,否則這將強烈影響 CPU 的使用焰络。由于解壓縮的速度(CPU 使用率)主要取決于未壓縮的數(shù)據(jù)量,所以即使在未壓縮的情況下符喝,緊湊地存儲數(shù)據(jù)(沒有任何“垃圾”)也是非常重要的闪彼。
因為有些系統(tǒng)可以單獨存儲單獨列的值,但由于其他場景的優(yōu)化协饲,無法有效處理分析查詢备蚓。例如 HBase课蔬,BigTable,Cassandra 和 HyperTable郊尝。在這些系統(tǒng)中二跋,每秒鐘可以獲得大約十萬行的吞吐量,但是每秒不會達(dá)到數(shù)億行流昏。
另外扎即,ClickHouse 是一個 DBMS,而不是一個單一的數(shù)據(jù)庫况凉。ClickHouse 允許在運行時創(chuàng)建表和數(shù)據(jù)庫谚鄙,加載數(shù)據(jù)和運行查詢,而無需重新配置和重新啟動服務(wù)器刁绒。
?2. 數(shù)據(jù)壓縮
一些面向列的 DBMS(InfiniDB CE 和 MonetDB)不使用數(shù)據(jù)壓縮闷营。但是,數(shù)據(jù)壓縮確實提高了性能知市。
?3. 磁盤存儲的數(shù)據(jù)
許多面向列的 DBMS(SAP HANA 和 GooglePowerDrill)只能在內(nèi)存中工作傻盟。但即使在數(shù)千臺服務(wù)器上,內(nèi)存也太小嫂丙,無法在 Yandex.Metrica 中存儲所有瀏覽量和會話娘赴。
?4. 多核并行處理
多核多節(jié)點并行化大型查詢。
?5. 在多個服務(wù)器上分布式處理
上面列出的列式 DBMS 幾乎都不支持分布式處理跟啤。在 ClickHouse 中诽表,數(shù)據(jù)可以駐留在不同的分片上。每個分片可以是用于容錯的一組副本隅肥。查詢在所有分片上并行處理竿奏。這對用戶來說是透明的。
?6.SQL 支持
如果你熟悉標(biāo)準(zhǔn)的 SQL 語法腥放,那么大家在談?wù)?ClickHouse SQL 語法的支持層面上泛啸,就不能算真正全面的支持 SQL 語法了。ClickHouse ?SQL 有跟真正 SQL 不一樣的函數(shù)名稱捉片。不過語法基本跟 SQL 語法兼容平痰,支持 JOIN汞舱、FROM伍纫、IN 和 JOIN 子句以及標(biāo)量子查詢支持子查詢。不支持關(guān)聯(lián)子查詢昂芜。ClickHouse 支持基于 SQL 的聲明性的查詢語言莹规,并且在許多情況下符合 SQL 標(biāo)準(zhǔn)。支持 FROM BY泌神、IN 和 JOIN 子句中的 GROUP BY良漱、ORDER BY舞虱,標(biāo)量子查詢和子查詢。不支持特殊的子查詢和窗口函數(shù)母市。
?7. 向量化引擎
數(shù)據(jù)不僅按列存儲矾兜,而且由矢量 - 列的部分進(jìn)行處理。這使我們能夠?qū)崿F(xiàn)高 CPU 性能患久。
?8. 實時數(shù)據(jù)更新
ClickHouse 支持主鍵表椅寺。為了快速執(zhí)行對主鍵范圍的查詢,數(shù)據(jù)使用合并樹 (MergeTree) 進(jìn)行遞增排序蒋失。由于這個原因返帕,數(shù)據(jù)可以不斷地添加到表中。添加數(shù)據(jù)時無鎖處理篙挽。
?9. 索引
例如荆萤,帶有主鍵可以在特定的時間范圍內(nèi)為特定客戶端(Metrica 計數(shù)器)抽取數(shù)據(jù),并且延遲時間小于幾十毫秒铣卡。
?10. 支持在線查詢
這讓我們使用該系統(tǒng)作為 Web 界面的后端链韭。低延遲意味著可以無延遲實時地處理查詢,而 Yandex.Metrica 界面頁面正在加載(在線模式)算行。
?11. 支持近似計算
系統(tǒng)包含用于近似計算各種值梧油,中位數(shù)和分位數(shù)的集合函數(shù)。
支持基于部分(樣本)數(shù)據(jù)運行查詢并獲得近似結(jié)果州邢。在這種情況下儡陨,從磁盤檢索比例較少的數(shù)據(jù)。
支持為有限數(shù)量的隨機(jī)密鑰(而不是所有密鑰)運行聚合量淌。在數(shù)據(jù)中密鑰分發(fā)的特定條件下骗村,這提供了相對準(zhǔn)確的結(jié)果,同時使用較少的資源呀枢。
?12. 數(shù)據(jù)復(fù)制和對數(shù)據(jù)完整性的支持胚股。
使用異步多主復(fù)制。寫入任何可用的副本后裙秋,數(shù)據(jù)將分發(fā)到所有剩余的副本琅拌。系統(tǒng)在不同的副本上保持相同的數(shù)據(jù)。數(shù)據(jù)在失敗后自動恢復(fù)
ClickHouse 不完美之處:
不支持事物摘刑。
不支持 Update/Delete 操作进宝。
支持有限操作系統(tǒng)。
現(xiàn)在支持 ubuntu枷恕,CentOS 需要自己編譯党晋,不過有熱心人已經(jīng)編譯好了,拿來用就行。對于 Windows 不支持未玻。
?ClickHouse 與已有大數(shù)據(jù)分析技術(shù)有何不同
知道了 ClickHouse 的特性和不完美灾而,下面我們可以對比一下之前的大數(shù)據(jù)分析跟現(xiàn)在的有啥區(qū)別?
| ?代替復(fù)雜的多樣大數(shù)據(jù)技術(shù)組合架構(gòu)
之前的大數(shù)據(jù)分析扳剿,例如 Hadoop 家族由很多技術(shù)和框架組合而成旁趟,猶如一頭大象被拆分后其實所剩下的價值也就是 HDFS、Kafka庇绽、Spark 轻庆,其他的幾乎都沒有任何價值。
這些可以用 ClickHouse 一項技術(shù)代替敛劝。
典型的大數(shù)據(jù)分析架構(gòu) =>ClickHouse
| ?查詢速度快快快
以下為新浪公司實戰(zhàn)得出的測試結(jié)果:
集群部署 4 臺機(jī)器余爆,每臺機(jī)器配置 :CPU E5-2620@2.00GHz ?,開啟超線程后 24core ?夸盟,48g 內(nèi)存蛾方,3T × 12 Raid5Select ?count(*) ?300 億 數(shù)據(jù) ?0.9 秒
select date, count(*) from xx group by date ?,300 億數(shù)據(jù) group by 日期 查詢 9.8 秒
| ?官方壓測
下面是 100M 數(shù)據(jù)集的跑分結(jié)果:ClickHouse 比 Vertia 快約 5 倍上陕,比 Hive 快 279 倍桩砰,比 My SQL 快 801 倍;雖然對不同的 SQL 查詢释簿,結(jié)果不完全一樣亚隅,但是基本趨勢是一致的。ClickHouse 跑分有多塊庶溶?舉個例子:ClickHouse 1 秒煮纵,Vertica 5.42 秒,Hive 279 秒偏螺;
四.ClickHouse 應(yīng)用場景
自從 ClickHouse2016 年 6 月 15 日開源后行疏,ClickHouse 中文社區(qū)隨后成立。中文開源組開始以易觀套像、新浪酿联、海康威視夺巩、美團(tuán)贞让、京東、58柳譬、騰訊喳张、酷狗音樂和俄羅斯開源社區(qū)等人員組成,隨著開源社區(qū)的不斷活躍征绎,陸續(xù)有神州數(shù)碼蹲姐、青云、PingCAP人柿、中軟國際等公司成員加入柴墩。一開始只是幾個 ClickHouse 愛好者在群里討論 ClickHouse 技術(shù),后來因為加入的人越來越多凫岖,群內(nèi)分享不太方便江咳,社區(qū)建立了 ClickHouse 中文論壇。在交流中哥放,我們了解到一些一線大廠已經(jīng)把 ClickHouse 運用到生產(chǎn)環(huán)境中歼指,社區(qū)也從各個公司運用中吸收了經(jīng)驗。
ClickHouse 目前已經(jīng)應(yīng)用于以下場景:
電信行業(yè)用于存儲數(shù)據(jù)和統(tǒng)計數(shù)據(jù)使用甥雕。
新浪微博用于用戶行為數(shù)據(jù)記錄和分析工作踩身。
用于廣告網(wǎng)絡(luò)和 RTB、電子商務(wù)的用戶行為分析社露。
信息安全里面的日志分析挟阻。
檢測和遙感信息的挖掘。
商業(yè)智能峭弟。
網(wǎng)絡(luò)游戲以及物聯(lián)網(wǎng)的數(shù)據(jù)處理和價值數(shù)據(jù)分析附鸽。
最大的應(yīng)用來自于 Yandex 的統(tǒng)計分析服務(wù) Yandex.Metrica,類似于谷歌 Analytics(GA)瞒瘸,或友盟統(tǒng)計坷备、小米統(tǒng)計,幫助網(wǎng)站或移動應(yīng)用進(jìn)行數(shù)據(jù)分析和精細(xì)化運營工具情臭。據(jù)稱 Yandex.Metrica 為世界上第二大的網(wǎng)站分析平臺省撑。ClickHouse 在這個應(yīng)用中,部署了近四百臺機(jī)器俯在,每天支持 200 億的事件和歷史總記錄超過 13 萬億條記錄丁侄,這些記錄都存有原始數(shù)據(jù)(非聚合數(shù)據(jù)),隨時可以使用 SQL 查詢和分析朝巫,生成用戶報告鸿摇。
五.ClickHouse 和一些技術(shù)的比較
商業(yè) OLAP 數(shù)據(jù)庫
例如:HP Vertica, Actian the Vector,
區(qū)別:ClickHouse 是開源而且免費的
云解決方案
例如:亞馬遜 RedShift 和谷歌的 BigQuery
區(qū)別:ClickHouse 可以使用自己機(jī)器部署,無需為云付費
3.Hadoop 生態(tài)軟件
例如:Cloudera Impala, Spark SQL, Facebook Presto , Apache Drill
區(qū)別:
ClickHouse 支持實時的高并發(fā)系統(tǒng)
ClickHouse 不依賴于 Hadoop 生態(tài)軟件和基礎(chǔ)
ClickHouse 支持分布式機(jī)房的部署
開源 OLAP 數(shù)據(jù)庫
例如:InfiniDB, MonetDB, LucidDB
區(qū)別:這些項目的應(yīng)用的規(guī)模較小劈猿,并沒有應(yīng)用在大型的互聯(lián)網(wǎng)服務(wù)當(dāng)中拙吉,相比之下,ClickHouse 的成熟度和穩(wěn)定性遠(yuǎn)遠(yuǎn)超過這些軟件揪荣。
開源分析筷黔,非關(guān)系型數(shù)據(jù)庫
例如:Druid , Apache Kylin
區(qū)別:ClickHouse 可以支持從原始數(shù)據(jù)的直接查詢,ClickHouse 支持類 SQL 語言仗颈,提供了傳統(tǒng)關(guān)系型數(shù)據(jù)的便利佛舱。
六.總結(jié)
在大數(shù)據(jù)分析領(lǐng)域中椎例,傳統(tǒng)的大數(shù)據(jù)分析需要不同框架和技術(shù)組合才能達(dá)到最終的效果,在人力成本请祖,技術(shù)能力和硬件成本上以及維護(hù)成本讓大數(shù)據(jù)分析變得成為昂貴的事情订歪。讓很多中小型企業(yè)非常苦惱肆捕,不得不被迫租賃第三方大型公司的數(shù)據(jù)分析服務(wù)刷晋。
ClickHouse 開源的出現(xiàn)讓許多想做大數(shù)據(jù)并且想做大數(shù)據(jù)分析的很多公司和企業(yè)耳目一新。
ClickHouse 正是以不依賴 Hadoop 生態(tài)慎陵、安裝和維護(hù)簡單眼虱、查詢速度快、可以支持 SQL 等特點在大數(shù)據(jù)分析領(lǐng)域越走越遠(yuǎn)席纽。
歡迎工作一到五年的Java工程師朋友們加入Java程序員開發(fā): 854393687
群內(nèi)提供免費的Java架構(gòu)學(xué)習(xí)資料(里面有高可用捏悬、高并發(fā)、高性能及分布式润梯、Jvm性能調(diào)優(yōu)邮破、Spring源碼,MyBatis仆救,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構(gòu)資料)合理利用自己每一分每一秒的時間來學(xué)習(xí)提升自己抒和,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕彤蔽,使勁拼摧莽,給未來的自己一個交代!