安裝
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億行220GB的文件的紐約出租車數據,復雜Groupby查詢時間在3台服務器集群下不超過1秒,單服務器不超4秒
配置:16個物理內核,128G RAM(GROUP BY+Order查詢)
這在Hive還是MySQL都是望塵莫及。
SELECT passenger_count, toYear(pickup_date) AS year, count(*) FROM trips_mergetree GROUP BY passenger_count, year
SELECT passenger_count, toYear(pickup_date) AS year, round(trip_distance) AS distance, count(*)
FROM trips_mergetree
GROUP BY passenger_count, year, distance
ORDER BY year, count(*) DESC
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.)