比Hive快800倍!大數據實時分析領域黑馬開源ClickHouse

比Hive快800倍!大數據實時分析領域黑馬開源ClickHouse

作者 | 張海濤

出處丨AI 前線

AI 前線導讀:ClickHouse 是俄羅斯最大的搜索公司 Yandex 推出的大數據存儲和開源組件,在 2017 年易觀 OLAP 大賽獲得黑馬冠軍之後,得到了大量的媒體曝光和開發者的認同,大家戲稱這是俄羅斯送來的“喀秋莎數據庫”。本文將深入淺出的講解 ClickHouse 數據引擎的基本原理和使用場景,是一篇非常好的 ClickHouse 入門之作。

一. 概述

隨著物聯網 IOT 時代的來臨,IOT 設備感知和報警存儲的數據越來越大,有用的價值數據需要數據分析師去分析。大數據分析成了非常重要的環節。當然近兩年開啟的開源大潮,為大數據分析工程師提供了十分富餘的工具。但這同時也增加了開發者選擇合適的工具的難度,尤其對於新入行的開發者來說。學習成本,框架的多樣化和複雜度成了很大的難題。例如 Kafka,Hdfs,Spark,Hive 等等組合才能產生最後的分析結果。把各種開源框架、工具、庫、平臺人工整合到一起所需工作之複雜,是大數據領域開發和數據分析師常有的抱怨之一,也是他們支持大數據分析平臺簡單化和統一化的首要原因。

二.ClickHouse 發展歷史

Yandex 在 2016 年 6 月 15 日開源了一個數據分析的數據庫,名字叫做 ClickHouse,這對保守俄羅斯人來說是個特大事。更讓人驚訝的是,這個列式存儲數據庫的跑分要超過很多流行的商業 MPP 數據庫軟件,例如 Vertica。如果你沒有聽過 Vertica,那你一定聽過 Michael Stonebraker,2014 年圖靈獎的獲得者,PostgreSQL 和 Ingres 發明者(Sybase 和 SQL Server 都是繼承 Ingres 而來的), Paradigm4 和 SciDB 的創辦者。Michael Stonebraker 於 2005 年創辦 Vertica 公司,後來該公司被 HP 收購,HP Vertica 成為 MPP 列式存儲商業數據庫的高性能代表,Facebook 就購買了 Vertica 數據用於用戶行為分析。

三.ClickHouse 支持特性剖析

在看 ClickHouse 運行場景之前,架構師或開發人員必須要了解技術的功能特性以及弊端。只有”知己知彼”才可以”百戰不殆”,接下來我們看一下 ClickHouse 的具體特點。我們來看看其中的一些功能:

1. 真正的面向列的 DBMS

在一個真正的面向列的 DBMS 中,沒有任何“垃圾”存儲在值中。例如,必須支持定長數值,以避免在數值旁邊存儲長度“數字”。例如,十億個 UInt8 類型的值實際上應該消耗大約 1 GB 的未壓縮磁盤空間,否則這將強烈影響 CPU 的使用。由於解壓縮的速度(CPU 使用率)主要取決於未壓縮的數據量,所以即使在未壓縮的情況下,緊湊地存儲數據(沒有任何“垃圾”)也是非常重要的。

因為有些系統可以單獨存儲單獨列的值,但由於其他場景的優化,無法有效處理分析查詢。例如 HBase,BigTable,Cassandra 和 HyperTable。在這些系統中,每秒鐘可以獲得大約十萬行的吞吐量,但是每秒不會達到數億行。

另外,ClickHouse 是一個 DBMS,而不是一個單一的數據庫。ClickHouse 允許在運行時創建表和數據庫,加載數據和運行查詢,而無需重新配置和重新啟動服務器。

2. 數據壓縮

一些面向列的 DBMS(InfiniDB CE 和 MonetDB)不使用數據壓縮。但是,數據壓縮確實提高了性能。

3. 磁盤存儲的數據

許多面向列的 DBMS(SAP HANA 和 GooglePowerDrill)只能在內存中工作。但即使在數千臺服務器上,內存也太小,無法在 Yandex.Metrica 中存儲所有瀏覽量和會話。

4. 多核並行處理

多核多節點並行化大型查詢。

5. 在多個服務器上分佈式處理

上面列出的列式 DBMS 幾乎都不支持分佈式處理。在 ClickHouse 中,數據可以駐留在不同的分片上。每個分片可以是用於容錯的一組副本。查詢在所有分片上並行處理。這對用戶來說是透明的。

6.SQL 支持

如果你熟悉標準的 SQL 語法,那麼大家在談論 ClickHouse SQL 語法的支持層面上,就不能算真正全面的支持 SQL 語法了。ClickHouse SQL 有跟真正 SQL 不一樣的函數名稱。不過語法基本跟 SQL 語法兼容,支持 JOIN、FROM、IN 和 JOIN 子句以及標量子查詢支持子查詢。不支持關聯子查詢。ClickHouse 支持基於 SQL 的聲明性的查詢語言,並且在許多情況下符合 SQL 標準。支持 FROM BY、IN 和 JOIN 子句中的 GROUP BY、ORDER BY,標量子查詢和子查詢。不支持特殊的子查詢和窗口函數。

7. 向量化引擎

數據不僅按列存儲,而且由矢量 - 列的部分進行處理。這使我們能夠實現高 CPU 性能。

8. 實時數據更新

ClickHouse 支持主鍵表。為了快速執行對主鍵範圍的查詢,數據使用合併樹 (MergeTree) 進行遞增排序。由於這個原因,數據可以不斷地添加到表中。添加數據時無鎖處理。

9. 索引

例如,帶有主鍵可以在特定的時間範圍內為特定客戶端(Metrica 計數器)抽取數據,並且延遲時間小於幾十毫秒。

10. 支持在線查詢

這讓我們使用該系統作為 Web 界面的後端。低延遲意味著可以無延遲實時地處理查詢,而 Yandex.Metrica 界面頁面正在加載(在線模式)。

11. 支持近似計算

  1. 系統包含用於近似計算各種值,中位數和分位數的集合函數。
  2. 支持基於部分(樣本)數據運行查詢並獲得近似結果。在這種情況下,從磁盤檢索比例較少的數據。
  3. 支持為有限數量的隨機密鑰(而不是所有密鑰)運行聚合。在數據中密鑰分發的特定條件下,這提供了相對準確的結果,同時使用較少的資源。

12. 數據複製和對數據完整性的支持。

使用異步多主複製。寫入任何可用的副本後,數據將分發到所有剩餘的副本。系統在不同的副本上保持相同的數據。數據在失敗後自動恢復

ClickHouse 不完美之處:

  1. 不支持事物。
  2. 不支持 Update/Delete 操作。
  3. 支持有限操作系統。

現在支持 ubuntu,CentOS 需要自己編譯,不過有熱心人已經編譯好了,拿來用就行。對於 Windows 不支持。

ClickHouse 與已有大數據分析技術有何不同

知道了 ClickHouse 的特性和不完美,下面我們可以對比一下之前的大數據分析跟現在的有啥區別?

| 代替複雜的多樣大數據技術組合架構

之前的大數據分析,例如 Hadoop 家族由很多技術和框架組合而成,猶如一頭大象被拆分後其實所剩下的價值也就是 HDFS、Kafka、Spark ,其他的幾乎都沒有任何價值。

這些可以用 ClickHouse 一項技術代替。


比Hive快800倍!大數據實時分析領域黑馬開源ClickHouse


比Hive快800倍!大數據實時分析領域黑馬開源ClickHouse


典型的大數據分析架構 =>ClickHouse

比Hive快800倍!大數據實時分析領域黑馬開源ClickHouse


| 查詢速度快快快

以下為新浪公司實戰得出的測試結果:

比Hive快800倍!大數據實時分析領域黑馬開源ClickHouse


集群部署 4 臺機器,每臺機器配置 :CPU [email protected] ,開啟超線程後 24core ,48g 內存,3T × 12 Raid5Select count(*) 300 億 數據 0.9 秒

比Hive快800倍!大數據實時分析領域黑馬開源ClickHouse


select date, count(*) from xx group by date ,300 億數據 group by 日期 查詢 9.8 秒

| 官方壓測

下面是 100M 數據集的跑分結果:ClickHouse 比 Vertia 快約 5 倍,比 Hive 快 279 倍,比 My SQL 快 801 倍;雖然對不同的 SQL 查詢,結果不完全一樣,但是基本趨勢是一致的。ClickHouse 跑分有多塊?舉個例子:ClickHouse 1 秒,Vertica 5.42 秒,Hive 279 秒;

比Hive快800倍!大數據實時分析領域黑馬開源ClickHouse


四.ClickHouse 應用場景

自從 ClickHouse2016 年 6 月 15 日開源後,ClickHouse 中文社區隨後成立。中文開源組開始以易觀、新浪、海康威視、美團、京東、58、騰訊、酷狗音樂和俄羅斯開源社區等人員組成,隨著開源社區的不斷活躍,陸續有神州數碼、青雲、PingCAP、中軟國際等公司成員加入。一開始只是幾個 ClickHouse 愛好者在群裡討論 ClickHouse 技術,後來因為加入的人越來越多,群內分享不太方便,社區建立了 ClickHouse 中文論壇。在交流中,我們瞭解到一些一線大廠已經把 ClickHouse 運用到生產環境中,社區也從各個公司運用中吸收了經驗。

ClickHouse 目前已經應用於以下場景:

  1. 電信行業用於存儲數據和統計數據使用。
  2. 新浪微博用於用戶行為數據記錄和分析工作。
  3. 用於廣告網絡和 RTB、電子商務的用戶行為分析。
  4. 信息安全裡面的日誌分析。
  5. 檢測和遙感信息的挖掘。
  6. 商業智能。
  7. 網絡遊戲以及物聯網的數據處理和價值數據分析。
  8. 最大的應用來自於 Yandex 的統計分析服務 Yandex.Metrica,類似於谷歌 Analytics(GA),或友盟統計、小米統計,幫助網站或移動應用進行數據分析和精細化運營工具。據稱 Yandex.Metrica 為世界上第二大的網站分析平臺。ClickHouse 在這個應用中,部署了近四百臺機器,每天支持 200 億的事件和歷史總記錄超過 13 萬億條記錄,這些記錄都存有原始數據(非聚合數據),隨時可以使用 SQL 查詢和分析,生成用戶報告。

五.ClickHouse 和一些技術的比較

  1. 商業 OLAP 數據庫
  • 例如:HP Vertica, Actian the Vector,
  • 區別:ClickHouse 是開源而且免費的
  1. 雲解決方案
  • 例如:亞馬遜 RedShift 和谷歌的 BigQuery
  • 區別:ClickHouse 可以使用自己機器部署,無需為雲付費

3.Hadoop 生態軟件

  • 例如:Cloudera Impala, Spark SQL, Facebook Presto , Apache Drill
  • 區別:
  • ClickHouse 支持實時的高併發系統
  • ClickHouse 不依賴於 Hadoop 生態軟件和基礎
  • ClickHouse 支持分佈式機房的部署

  1. 開源 OLAP 數據庫
  • 例如:InfiniDB, MonetDB, LucidDB
  • 區別:這些項目的應用的規模較小,並沒有應用在大型的互聯網服務當中,相比之下,ClickHouse 的成熟度和穩定性遠遠超過這些軟件。
  1. 開源分析,非關係型數據庫
  • 例如:Druid , Apache Kylin
  • 區別:ClickHouse 可以支持從原始數據的直接查詢,ClickHouse 支持類 SQL 語言,提供了傳統關係型數據的便利。

六.總結

在大數據分析領域中,傳統的大數據分析需要不同框架和技術組合才能達到最終的效果,在人力成本,技術能力和硬件成本上以及維護成本讓大數據分析變得成為昂貴的事情。讓很多中小型企業非常苦惱,不得不被迫租賃第三方大型公司的數據分析服務。

ClickHouse 開源的出現讓許多想做大數據並且想做大數據分析的很多公司和企業耳目一新。

ClickHouse 正是以不依賴 Hadoop 生態、安裝和維護簡單、查詢速度快、可以支持 SQL 等特點在大數據分析領域越走越遠。

感謝易觀 CTO 郭煒和新浪高鵬高總的資料支持和寫序支持。

傳送門

ClickHouse 官網:https://clickhouse.yandex/

ClickHouse 開源項目地址:https://github.com/yandex/ClickHouse

張海濤,目前就職於海康威視雲基礎平臺,負責雲計算大數據的基礎架構設計和中間件的開發,專注雲計算大數據方向。ClickHouse 中文社區人員,如果想進一步瞭解最新 ClickHouse 動態和技術研究成果,請加微信 cyrjkj 入群共同研究和運用。或者訪問者訪問 clickhouse.com.cn 加入開發加入開發者社區。


分享到:


相關文章: