Clickhouse初體驗

開篇

最近在實習(xí)做一個機(jī)器學(xué)習(xí)聚類相關(guān)的項目。在進(jìn)行數(shù)據(jù)處理的時候需要使用數(shù)據(jù)庫對數(shù)據(jù)進(jìn)行聚合計算來提取特征。由于之前聽說過Clickhouse這個由毛子開發(fā)的開源數(shù)據(jù)庫速度相當(dāng)?shù)每欤源蛩氵M(jìn)行一次嘗試。

簡介

ClickHouse是一個開源的用于在線分析處理的列式數(shù)據(jù)庫。

ClickHouse是由俄羅斯的Yandex公司(好像類似俄羅斯的百度的存在)為了Yandex Metrica網(wǎng)絡(luò)分析服務(wù)而開發(fā)。它支持分析實時更新的數(shù)據(jù),Clickhouse以高性能著稱。

ClickHouse is an open-source Column-oriented DBMS(columnar database management system) for online analytical processing (OLAP).

ClickHouse was developed by the Russian IT company Yandex for the Yandex.Metrica web analytics service. ClickHouse allows analysis of data that is updated in real time. The system is marketed for high performance.

總結(jié)起來ClickHouse的一個最顯著的特點就是快,跑分高,甚至要高于很多商業(yè)的數(shù)據(jù)庫系統(tǒng)。它的排名也上漲的非常快,最近數(shù)據(jù)分析相關(guān)比賽中有隊伍使用ClickHouse奪得冠軍。所以這個數(shù)據(jù)庫還是比較值得我們嘗試嘗試。

不過ClickHouse也有一些缺點,它大概是2016年6月份左右開源,是一個比較新的產(chǎn)品。社區(qū)俄語+英語為主,因為是俄羅斯的產(chǎn)品,俄語的內(nèi)容不少,需要適當(dāng)使用谷歌翻譯來獲取我們需要的信息。另一方面,Clickhouse目前只支持Linux,想要在Windows或者是Mac上面運行要用到Docker。這一方面本人就不太了解。

在實習(xí)的項目中,我使用的本地Win10操作系統(tǒng) + Linux Ubuntu16.04.3 LTS(GNU/Linux 4.13.0-39-generic x86_64)服務(wù)器,使用Putty進(jìn)行SSH連接訪問服務(wù)器。

安裝與配置

關(guān)于Clickhouse的安裝與配置我們在官網(wǎng),谷歌或者百度上面都可以找到不少教程,這里就不再贅述。下面放官方鏈接提供參考。

ClickHouse Quick Start

安裝指南

在完成安裝之后只需要在Terminal中鍵入命令:


clickhouse-client

或者


clickhouse-client -m (多行模式)

關(guān)于服務(wù)器的配置同樣可以參考官方教程

服務(wù)器配置

服務(wù)器配置

看不太懂英文的話請善用谷歌/百度/有道翻譯。

本人倒是直接使用了默認(rèn)的配置基本也能在本地完美運行。如果想要設(shè)置集群或者是遠(yuǎn)程訪問的話就需要修改一些配置,這些我下面會提到。

使用方法

Clickhouse的語法基本和SQL類似,不過它自己又增加了一些新的特性。比如生成表的時候要定義使用的引擎,有MergeTree, Merge, Log之類的不同的表引擎,它們決定了數(shù)據(jù)的存儲方式,以及索引之類的內(nèi)容,主要目的是能夠支持最快的查詢。

Clichouse表引擎(官方)

Clickhouse表引擎(中文)

Clickhouse比較不方便的一點是不支持Update,delete操作,畢竟一切為了速度。插入和查詢的效率都相當(dāng)之高,還能夠支持直接導(dǎo)入導(dǎo)出CSV文件。


cat path_to_your_csv/XXX.csv | clickhouse-client  --query="Insert into XXX FORMAT CSV";


clickhouse-client  --query="select * from XXXX"  > path_to_output/XXX.csv

默認(rèn)的數(shù)據(jù)庫是Default,密碼是空。如果需要自己生成新的數(shù)據(jù)庫用戶和密碼,可以直接在users.xml進(jìn)行添加修改。

其余特性也都可以在官網(wǎng)教程中找到。

圖形化界面

Clickhouse官方暫時沒有圖形化界面,這樣使得操作相當(dāng)?shù)貌环奖悖绻褂肧SH + Terminal連接Linux服務(wù)器進(jìn)行操作,SQL指令和返回的表結(jié)果(行數(shù)較多)都無法在Terminal上完美顯示。這里官網(wǎng)也提到了幾個第三方的圖形化界面。我嘗試了其中的Tabix,效果還算不錯。

Tabix是一個三方的開源Clickhouse圖形化界面。完全免費而且不需要安裝,可以直接從瀏覽器打開。

Tabix官網(wǎng)

Tabix UI

只需要連接clickhouse服務(wù)器就能直接在瀏覽器上操作Clickhouse,非常方便。

考慮一般情況下Clickhouse服務(wù)器安裝在Linux服務(wù)器。這里介紹如何遠(yuǎn)程連接Clickhouse。

有一篇俄文的博客簡潔明了地介紹了Tabix連接遠(yuǎn)程Clickhouse服務(wù)器的方法。

Tabix- Clickhouse的界面

首先我們需要對服務(wù)器進(jìn)行配置,以便它接受外部連接。

1. 關(guān)閉Clickhouse server的服務(wù)


sudo service clickhouse-server stop

2. 使用文本編輯器打開配置文件 /etc/clickhouse-server/config.xml(這里使用vi)


sudo vi /etc/clickhouse-server/config.xml

3. 只留下listen_port標(biāo)簽中的


<listen_host>::</listen_host>

監(jiān)聽所有窗口

4. 保存并退出

5. Linux服務(wù)器開放端口8123

Clickhouse服務(wù)器默認(rèn)運行在端口8123,我們需要在防火墻中允許開放端口8123


sudo ufw allow 8123

6.重啟Clickhouse server服務(wù)

sudo service clickhouse-server start

最后轉(zhuǎn)到Tabix UI界面, 輸入名字, 主機(jī)端口號還有登錄名密碼(如果是Default的話密碼基本為空,不用填寫)。

Tabix登錄

這樣我們就可以直接使用圖形化界面寫Clickhouse命令了,無論是建表,插入還是查詢都能做到。查詢返回的結(jié)果還能夠以圖表的形式顯示,比終端顯示更加直觀。

查詢結(jié)果

結(jié)束

作為一個開源的數(shù)據(jù)庫,Clickhouse確實速度相當(dāng)快,處理百萬級千萬級甚至億級的數(shù)據(jù)運行時間都是以秒計時。開源免費的優(yōu)勢也使得它非常適合不算過于復(fù)雜的項目。當(dāng)然Clickhouse也有不少缺點,畢竟它還是一個新興的數(shù)據(jù)庫,整個社區(qū)還在蓬勃發(fā)展中。它當(dāng)前只支持主流的Linux,也許未來能兼容更多的操作系統(tǒng)。如果你喜歡嘗試新的事物,不妨安裝一個來玩一玩。

參考資料

  1. Clickhouse官方文檔

  2. Clickhouse官方教程

  3. Clickhouse專業(yè)中文社區(qū)

  4. Clickhouse官方Github

  5. Tabix官方網(wǎng)站Tabix官方Github

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,471評論 25 708
  • 【明線暗戰(zhàn)交織】 明線是沙也加的人生經(jīng)歷,暗線是我的人生。沙也加因為在兄長殺死父親的火災(zāi)后失憶,從而被養(yǎng)父母隱瞞一...
    CASSIE_CC閱讀 342評論 0 0
  • 穿插在縱橫交錯的馬路上 沒有了方向 行走在下班流中的一剎那 我似一粒灰塵 漂浮在人世間 你看啊,那是驚鴻一瞥 還是...
    陳明青年閱讀 1,116評論 2 3
  • 循環(huán)過一百多次的一首歌 受LOFTER 糖老師影響 借鑒了一張封面 你們想知道怎么做的嘛?
    荒島路影像閱讀 324評論 0 0
  • 走過很多路, 見過很多人, 看過很多電影, 慢慢懂了人生。 曾經(jīng),很多臺詞看不懂, 如今,看懂已是傷心人。 《阿甘...
    天天天藍(lán)2閱讀 282評論 0 0