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 運行場景之前要了解技術的功能特性以及弊端是一個技術架構以及開發人員所要了解的。隻有”知己知彼”才可以”百戰不殆”,接下來我們看一下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等特點在大數據分析領域越走越遠。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!