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 --importhttps://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-serveror 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.)