1. 程式人生 > 實用技巧 >ClickHouse在CentOS-7 Linux下安裝和初體驗

ClickHouse在CentOS-7 Linux下安裝和初體驗

安裝

1、檢查系統是否支援clickhouse安裝

grep -q sse4_2 /proc/cpuinfo && echo “SSE 4.2 supported” || echo “SSE 4.2 not supported.
“SSE 4.2 supported” 代表可以安裝,ClickHouse需要使用SSE硬體指令集加速,大大加快了CPU暫存器計算效率。


2、新建rpm包所在目錄
mkdir -p /opt/software/clickhouse/
cd /opt/software/clickhouse/

自動安裝:

首先,您需要新增官方儲存庫:

yum install yum-utils
rpm --import 
https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64 如果您想使用最新版本,請將stable替換為testing(建議您在測試環境中使用)。 然後執行這些命令以實際安裝包: yum install clickhouse-server clickhouse-client

或者按順序手動安裝:
下載地址:
https://packagecloud.io/Altinity/clickhouse/

rpm -ivh clickhouse-server-common-20
.8.3.18-1.el7.x86_64.rpm rpm -ivh clickhouse-common-static-20.8.3.18-1.el7.x86_64.rpm rpm -ivh clickhouse-server-20.8.3.18-1.el7.x86_64.rpm rpm -ivh clickhouse-test-20.8.3.18-1.el7.x86_64.rpm rpm -ivh clickhouse-client-20.8.3.18-1.el7.x86_64.rpm

啟動服務
可以執行如下命令在後臺啟動服務:

systemctl start clickhouse-server
systemctl stop clickhouse-server
systemctl status clickhouse-server
or service clickhouse-server start

在我們安裝的軟體中包含這些包:

  • clickhouse-client 包,包含 clickhouse-client 應用程式,它是互動式ClickHouse控制檯客戶端。
  • clickhouse-common 包,包含一個ClickHouse可執行檔案。
  • clickhouse-server 包,包含要作為服務端執行的ClickHouse配置檔案。

服務端配置檔案位於 /etc/clickhouse-server/。 在進一步討論之前,請注意 config.xml檔案中的<path> 元素. Path決定了資料儲存的位置,因此該位置應該位於磁碟容量較大的捲上;預設值為 /var/lib/clickhouse/

可以在/var/log/clickhouse-server/目錄中檢視日誌。

如果服務沒有啟動,請檢查配置檔案 /etc/clickhouse-server/config.xml。

你也可以在控制檯中直接啟動服務:

clickhouse-server --config-file=/etc/clickhouse-server/config.xml

啟動命令列客戶端

可以使用命令列客戶端連線到服務:

clickhouse-client
預設情況下它使用’default’使用者無密碼的與localhost:9000服務建立連線。
客戶端也可以用於連線遠端服務,例如:

clickhouse-client --host=example.com
clickhouse-client --host=localhost:9099

測試資料匯入

使用脫敏的Yandex.Metrica資料集
Dataset由兩個表組成,其中包含有關點選命中的匿名資料 (hits_v1)和訪問表 (visits_v1),加起來1.8G檔案,其中hits 包含1億行(在列資料庫中說“行”這個字比較怪啊,應該說匯入1億條資料)資料的表

下載和匯入點選表:

curl -O https://clickhouse-datasets.s3.yandex.net/hits/partitions/hits_v1.tar
tar xvf hits_v1.tar -C /var/lib/clickhouse # path to ClickHouse data directory
sudo service clickhouse-server restart
clickhouse-client --query "SELECT COUNT(*) FROM datasets.hits_v1"

下載和匯入訪問:

curl -O https://clickhouse-datasets.s3.yandex.net/visits/partitions/visits_v1.tar
tar xvf visits_v1.tar -C /var/lib/clickhouse # path to ClickHouse data directory
sudo service clickhouse-server restart
clickhouse-client --query "SELECT COUNT(*) FROM datasets.visits_v1"

也可以匯入tsv
https://clickhouse.tech/docs/zh/getting-started/tutorial/

紐約出租車資料

另有有個12億行的紐約出租車資料,複雜查詢時間在3臺伺服器叢集下不超過1秒,單伺服器配置16個物理核心,128G RAM(GROUP BY+Order查詢)不超4秒

https://clickhouse.tech/docs/zh/getting-started/example-datasets/nyc-taxi/

命令列客戶端使用

這個客戶端可以選擇使用互動式與非互動式(批量)兩種模式。
使用批量模式,要指定 query 引數,或者傳送資料到 stdin(它會檢查 stdin 是否是 Terminal),或者兩種同時使用。
它與 HTTP 介面很相似,當使用 query 引數傳送資料到 stdin 時,客戶端請求就是一行一行的 stdin 輸入作為 query 的引數。這種方式在大規模的插入請求中非常方便。

預設情況下,在批量模式中只能執行單個查詢。為了從一個 Script 中執行多個查詢,可以使用 --multiquery 引數。除了 INSERT 請求外,這種方式在任何地方都有用。查詢的結果會連續且不含分隔符地輸出。
同樣的,為了執行大規模的查詢,您可以為每個查詢執行一次 clickhouse-client。但注意到每次啟動 clickhouse-client 程式都需要消耗幾十毫秒時間。

在互動模式下,每條查詢過後,你可以直接輸入下一條查詢命令。

如果 multiline 沒有指定(預設沒指定):為了執行查詢,按下 Enter 即可。查詢語句不是必須使用分號結尾。如果需要寫一個多行的查詢語句,可以在換行之前輸入一個反斜槓\,然後在您按下 Enter 鍵後,您就可以輸入當前語句的下一行查詢了。

如果 multiline 指定了:為了執行查詢,需要以分號結尾並且按下 Enter 鍵。如果行末沒有分號,將認為當前語句並沒有輸入完而要求繼續輸入下一行。

若只執行單個查詢,分號後面的所有內容都會被忽略。

查詢例項

SELECT StartURL AS URL,AVG(Duration) AS AvgDuration \
FROM datasets.visits_v1 \
WHERE StartDate BETWEEN '2014-03-23' AND '2014-03-30' \
GROUP BY URL \
ORDER BY AvgDuration DESC \
LIMIT 10

SELECT EventDate,URL,UserID \
FROM datasets.hits_v1 \
WHERE EventDate BETWEEN '2014-03-23' AND '2014-03-30' \
LIMIT 10

SELECT EventDate,URL,UserID \
FROM datasets.hits_v1 \
ORDER BY EventDate DESC \
LIMIT 10;

我的虛擬機器是8G RAM 1CPU,最後一條查詢效能: Elapsed: 0.432 sec. Processed 8.87 million rows, 856.69 MB (20.56 million rows/s., 1.99 GB/s.)