clickhouse安裝部署以及版本選取


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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM