1. 系統要求
ClickHouse 可以在任何具有 x86_64、AArch64 或 PowerPC64LE CPU 架構的 Linux、FreeBSD 或 Mac OS X 上運行。官方預構建的二進制文件通常針對 x86_64 進行編譯並利用 SSE 4.2 指令集。如下命令檢查當前 CPU 是否支持 SSE 4.2:
grep -q sse4_2 proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
如果支持會輸出 SSE 4.2 supported 信息。
要在不支持 SSE 4.2 或不具有 AArch64、PowerPC64LE 架構的處理器上運行 ClickHouse,需要編譯源代碼構建 ClickHouse。
版本選擇:版本命名規則 Year.Major.Minor.patch
1)Year.Major.1.patch 1 表示測試版,大於1表示穩定版本。
2)有重大的更新和新特性主要在Minor為2的版本。
3)體驗最新的測試功能 可以選擇prestable或者testing版本。
4)對於企業來說可以選擇LTS的穩定版本,差不多6個月發布一個LTS版本,一年發布兩個。維護的周期要比stable版本長。
2. 安裝
2.1 使用 RPM 包
我們的系統是 CentOS,所以在這使用 RPM 包方式安裝 ClickHouse
對於 CentOS、RedHat 和所有其他基於 rpm 的 Linux 發行版,建議使用官方預編譯的 rpm 包。首先,您需要添加官方存儲庫:
sudo yum install yum-utils
sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64
然后運行如下命令來安裝軟件包:
sudo yum install clickhouse-server clickhouse-client |
我們還可以從這里手動下載和安裝軟件包。
除此之外,還可以通過使用DEB包、Tgz包以及Docker鏡像的方式安裝。下面還會簡單介紹如何使用DEB包、Tgz包進行安裝。
2.2 使用DEB包
Debian 或 Ubuntu 系統建議使用官方預編譯的 deb 包進行安裝。運行這些命令來安裝軟件包:
sudo apt-get install apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E0C56BD4
echo "deb https://repo.clickhouse.tech/deb/stable/ main/" | sudo tee \
etc/apt/sources.list.d/clickhouse.list
sudo apt-get update
sudo apt-get install -y clickhouse-server clickhouse-client
sudo service clickhouse-server start
clickhouse-client
如果您想使用最新版本,請將 stable 替換為 testing(適合測試環境)。
我們還可以從這里手動下載和安裝軟件包。
2.3 使用Tgz包
對於無法安裝 deb 或 rpm 軟件包的所有 Linux 發行版,建議使用官方預編譯的 tgz 包。可以使用 curl 或 wget 從存儲倉庫下載所需的版本。最新版本示例:
export LATEST_VERSION=`curl https://api.github.com/repos/ClickHouse/ClickHouse/tags 2>/dev/null | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n 1`
curl -O https://repo.clickhouse.tech/tgz/clickhouse-common-static-$LATEST_VERSION.tgz
curl -O https://repo.clickhouse.tech/tgz/clickhouse-common-static-dbg-$LATEST_VERSION.tgz
curl -O https://repo.clickhouse.tech/tgz/clickhouse-server-$LATEST_VERSION.tgz
curl -O https://repo.clickhouse.tech/tgz/clickhouse-client-$LATEST_VERSION.tgz
tar -xzvf clickhouse-common-static-$LATEST_VERSION.tgz
sudo clickhouse-common-static-$LATEST_VERSION/install/doinst.sh
tar -xzvf clickhouse-common-static-dbg-$LATEST_VERSION.tgz
sudo clickhouse-common-static-dbg-$LATEST_VERSION/install/doinst.sh
tar -xzvf clickhouse-server-$LATEST_VERSION.tgz
sudo clickhouse-server-$LATEST_VERSION/install/doinst.sh
sudo etc/init.d/clickhouse-server start
tar -xzvf clickhouse-client-$LATEST_VERSION.tgz
sudo clickhouse-client-$LATEST_VERSION/install/doinst.sh
2.4 修改data路徑
為便於統一控制相關數據文件,建議使用自定義路徑替代官方指定路徑。
推薦更改以下路徑
<path>/data/clickhouse/</path>#數據的目錄路徑。 <tmp_path>/data/clickhouse/tmp/</tmp_path>#用於處理大型查詢的臨時數據的路徑。 <user_files_path>/data/clickhouse/user_files/</user_files_path> #包含用戶文件的目錄,在表函數file()中使用。 <access_control_path>/data/clickhouse/access/</access_control_path>#配置權限管理數據的存儲位置 [與users.xml 中的 <access_management>1</access_management> 一同使用,控制開啟sql管理用戶] <format_schema_path>/data/clickhouse/format_schemas/</format_schema_path> #包含輸入格式文件(例如CapnProto格式的方案)的目錄路徑
針對access理解可查看:SQL-driven來管理用戶權限。
3. 啟動
有兩種方式可以啟動 ClickHouse,一種使用 service 方式啟動,一種使用 systemctl 方式啟動。如下使用 service 方式以守護進程方式啟動:
sudo service clickhouse-server start |
如果您沒有 service 命令,可以運行 sudo etc/init.d/clickhouse-server start 命令。
若 service 啟動過程報 Init script is already running 錯誤,運行 clickhouse-client 命令報 Connection refused 錯誤,則使用 systemctl 方式啟動:
sudo systemctl start clickhouse-server |
可以使用 sudo systemctl stop clickhouse-server 命令停止服務。
通過上圖我們可以看出在 var/log/clickhouse-server/ 目錄下查看日志。
啟動過程中入出現以下異常
Cannot obtain modification time for key file /etc/clickhouse-server/server.key, skipping update. errno: 2, strerror: No such file or directory
CertificateReloader: Poco::Exception. Code: 1000, e.code() = 0, SSL context exception: Error opening Diffie-Hellman parameters file /etc/clickhouse-server/dhparam.pem: error:02000002:system library:OPENSSL_internal:No such file or directory
則需要生成使用證書,避免后續啟動報錯。
#生成證書
openssl req -subj "/CN=localhost" -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/clickhouse-server/server.key -out /etc/clickhouse-server/server.crt
#pem證書,執行此命令需要4分鍾才能執行完成
openssl dhparam -out /etc/clickhouse-server/dhparam.pem 4096
#如果運行時間過長可以采用隨機數參數生成方式 可有效縮短時間
openssl dhparam -rand rand.seed -out /etc/clickhouse-server/dhparam.pem 4096
此外,我們還可以從控制台手動啟動服務器:
sudo -u clickhouse clickhouse-server --config-file=/etc/clickhouse-server/config.xml
如果配置文件在當前目錄下,則不需要指定 –config-file 參數。默認情況下,使用 ./config.xml。ClickHouse 支持訪問限制設置,可以修改 users.xml 文件。默認情況下,允許默認用戶從任何地方訪問,無需密碼。
注意:如果使用普通用戶安裝啟動,,需要sudo權限,注意配置中的自定義數據文件相關路徑。
chmod 777 -R /home/ad/clickhouse # 讀寫執行 都需要 最好上級 #如果仍有權限錯誤,賦予上級755 # cd /home # sudo chmod 755 -R ad/ cd /etc sudo chown -R ad:ad clickhouse-server sudo chmod 755 -R clickhouse-server sudo chown -R ad /var/log/clickhouse-server/ sudo -u ad clickhouse-server -C /etc/clickhouse-server/config.xml --daemon
4. 運行
啟動服務器后,我們可以使用命令行客戶端連接到它:
clickhouse-client |
默認情況下,表示用戶默認連接到 localhost:9000,無需密碼。還可用於使用 –host 參數連接到遠程服務器。
集群方式需要注意修改/etc/clickhouse-server/config.xml,簡單集群搭建不需要zookeeper,自身即可解決,注意config.xml各個服務器需要一致。創建用戶以及調整用戶權限,通過新增修改users.xml文件完成。
注意配置listen_host:
# <!--<listen_host>用於限制來源主機的請求--> <!-- Listen specified host. use :: (wildcard IPv6 address), if you want to accept connections both with IPv4 and IPv6 from everywhere. --> <!-- <listen_host>::</listen_host> --> <!-- Same for hosts with disabled ipv6: --> <!-- <listen_host>0.0.0.0</listen_host> --> #(1)允許IP4和IP6源主機遠程訪問 <listen_host>::</listen_host> #(2)僅允許IP4主機遠程訪問 <listen_host>0.0.0.0</listen_host> #(3)僅允許本地訪問 <!-- Default values - try listen localhost on ipv4 and ipv6: --> <listen_host>::1</listen_host> <listen_host>127.0.0.1</listen_host>
由於ClickHouse安裝后,默認client連接端口是9000,這個端口跟CDH的cloudera manager agent的默認端口相同。且ClickHouse默認9000端口是綁定在127.0.0.1上的,無法從其他機器連接ClickHouse。
解決方式:
1)僅允許IP4主機遠程訪問
<listen_host>0.0.0.0</listen_host> #這樣遠程都可以訪問了,但是禁用了IPV6
2) 修改端口和綁定地址
找到9000的配置項,將默認值9000改成其他,比如我改成9020
<tcp_port>9020</tcp_port> <listen_host>::</listen_host> #更改默認client端口后,需要指定port參數指定端口登錄。 clickhouse-client --port 9020
5. 卸載
#1、查看已安裝包 rpm -qa | grep clickhouse #2、卸載clickhouse相關軟件 #1)可以yum卸載 sudo yum remove -y clickhouse-client.noarch sudo yum remove -y clickhouse-common-static.x86_64 sudo yum remove -y clickhouse-server.noarch #2)或rpm 卸載 rpm -e clickhouse-client-20.5.4.40-2.noarch --nodeps rpm -e clickhouse-server-20.5.4.40-2.noarch --nodeps rpm -e clickhouse-common-static-20.5.4.40-2.x86_64 --nodeps #3、刪除相關的目錄和數據 #數據目錄 rm -rf /var/lib/clickhouse #刪除集群配置文件 rm -rf /etc/metrika.xml #刪除配置文件 rm -rf /etc/clickhouse-* #刪除日志文件 rm -rf /var/log/clickhouse-server #4、全局查找clickhouse文件和目錄,如果存在,則全部刪除 find / -name clickhouse