ClickHouse基本介紹與其他OLAP比較

ClickHouse是一個面向聯機分析處理(OLAP)的開源的面向列式存儲的DBMS,簡稱CK, 與Hadoop, Spark相比,ClickHouse很輕量級,由俄羅斯第一大搜索引擎Yandex於2016年6月發佈, 開發語言為C++

ClickHouse的特點:

開源的列存儲數據庫管理系統,支持線性擴展,簡單方便,高可靠性,

容錯跑分快:比Vertica快5倍,比Hive快279倍,比MySQL快800倍,其可處理的數據級別已達到10億級別

功能多:支持數據統計分析各種場景,支持類SQL查詢,異地複製部署

clickHouse的性能:

低延遲:對於數據量(幾千行,列不是很多)不是很大的短查詢,如果數據已經被載入緩存,且使用主碼,延遲在50MS左右。

併發量:雖然 ClickHouse 是一種在線分析型數據庫,也可支持一定的併發。當單個查詢比較短時,官方建議 100 Queries / second。

寫入速度:在使用 MergeTree 引擎的情況下,寫入速度大概是 50 - 200 M / s,如果按照 1 K 一條記錄來算,大約每秒可寫入 50000 ~ 200000 條記錄每秒。如果每條記錄比較小的話寫入速度會更快

其主要的應用場景: 用於結構良好清晰且不可變的事件或日誌流分析

Web和App分析,廣告網絡和RTB,電信,電子商務和金融,信息安全,監測和遙感,時間序列,商業智能,網絡遊戲,物聯網

需要注意的是: 由於clickHouse不支持事務操作, 顧不能作為傳統數據庫來使用(OLTP),以及高請求率的鍵值訪問,Blob或文檔存儲,超標準化數據

安裝clickHouse:

添加yum源 (一行內容)

yum-config-manager --add-repo http://repo.red-soft.biz/repos/clickhouse/repo/clickhouse-el6.repo

執行安裝(一行內容)

yum install clickhouse-server clickhouse-client clickhouse-server-common clickhouse-compressor

啟動clickHouse

/etc/init.d/clickhouse-server start

啟動以後可以看到三個端口

9000端口,用於接受客戶端請求

9009端口,用於集群複製數據

8123端口,http請求端口

登錄clickHouse:

第一種方式(連接本地): /etc/init.d/clickhouse-client第二種方式(連接遠程): /etc/init.d/clickhouse-client --host=… --port=… --user=… --password=…

登錄後, 其基本操作採用類SQL的方式即可使用, 但需要注意, 在建表時候, 需要開啟多行查詢, 否則建表時候會報錯

開啟多行查詢的方式:

clickhouse-client -m 或者: clickhouse-client --multiline

————————————————


ClickHouse基本介紹與其他OLAP比較


在看Clickhouse 運行場景之前要了解技術的功能特性以及弊端是一個技術架構以及開發人員所要了解的。只有”知己知彼”才可以”百戰不殆”,接下來我們看一下Clickhouse的具體特點;

Ø 1.真正的面向列的DBMS

Ø 2.數據高效壓縮

Ø 3.磁盤存儲的數據

Ø 4.多核並行處理

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

Ø 6.SQL語法支持

Ø 7.向量化引擎

Ø 8.實時數據更新

Ø 9.索引

Ø 10.適合在線查詢

Ø 11.支持近似預估計算

Ø 12.支持嵌套的數據結構

Ø 支持數組作為數據類型

Ø 13.支持限制查詢複雜性以及配額

Ø 14.複製數據複製和對數據完整性的支持

#我們來看看其中的一些功能:

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,我們不能真正談論SQL的支持。NULL不支持。所有的函數都有不同的名字。JOIN支持。子查詢在FROM,IN,JOIN子句中被支持;標量子查詢支持。關聯子查詢不支持。

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應用場景

自從ClickHouse2016年6月15日開源後,ClickHouse中文社區隨後成立。中文開源組開始以易觀,海康威視,美團,新浪,京東,58,騰訊,酷狗音樂和俄羅斯開源社區等人員組成,隨著開源社區的不斷活躍,陸續有神州數碼,青雲,PingCAP,中軟國際等公司成員加入以及其他公司成員加入。初始在群裡討論技術後續有一些大型公司陸續運用到項目中,介於分享不方便問題解決,建立了相應的論壇。根據交流得知一些大公司已經運用。

#可以應用以下場景:

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是開源而且免費的

2.雲解決方案

例如:亞馬遜RedShift和谷歌的BigQuery

區別:ClickHouse可以使用自己機器部署,無需為雲付費

3.Hadoop生態軟件

例如:Cloudera Impala, Spark SQL, Facebook Presto , Apache Drill

區別:

ClickHouse支持實時的高併發系統

ClickHouse不依賴於Hadoop生態軟件和基礎

ClickHouse支持分佈式機房的部署

4.開源OLAP數據庫

例如:InfiniDB, MonetDB, LucidDB

區別:這些項目的應用的規模較小,並沒有應用在大型的互聯網服務當中,相比之下,ClickHouse的成熟度和穩定性遠遠超過這些軟件。

5.開源分析,非關係型數據庫

例如:Druid , Apache Kylin

區別:ClickHouse可以支持從原始數據的直接查詢,ClickHouse支持類SQL語言,提供了傳統關係型數據的便利。

六.總結

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

ClickHouse開源的出現讓許多想做大數據並且想做大數據分析的很多公司和企業耳目一新。ClickHouse 正是以不依賴Hadoop 生態、安裝和維護簡單、查詢速度快、可以支持SQL等特點在大數據分析領域越走越遠。



分享到:


相關文章: