1. 程式人生 > 其它 >clickhouse叢集部署方法和驗證方法

clickhouse叢集部署方法和驗證方法

叢集節點資訊

192.168.30.118 

192.168.30.117

192.168.30.116

192.168.30.115

192.168.30.114

注意:5個節點,無副本

1、安裝依賴組建JDK

(1)下載版本:jdk-8u333-linux-x64.tar.gz

(2)下載連線:https://www.oracle.com/java/technologies/downloads/#java8-linux

(3)linux中建立目錄:/usr/local,將下載的jdk上傳到此目錄下,並將jdk-8u333-linux-x64重新命名為jdk1.8

mv jdk-8u333-linux-x64 jdk1.8

(4)解壓檔案:(把下載的檔案上傳到伺服器再次進行解壓)

tar -zxvf jdk-8u333-linux-x64.tar.gz

(5)配置環境變數

vim /etc/profile

i 是insert 簡寫,進入編輯輸入模式

/ 是可以搜尋關鍵字

:wq 儲存退出

:q 不儲存退出

:q! 強制退出

新增如下內容(注意:java_home按照自己的jdk存放目錄來放)

export JAVA_HOME=/root/jdk/jdk1.8.0_333
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin

按 Esc 退出編輯模式,輸入 :wq 儲存並退出

(6)生效環境變數

source /etc/profile

(7)檢查是否安裝成功

javac -version

java  -version

2、搭建zookeeper叢集

在這三個節點搭建一個zookeeper叢集(如果搭建可以直接忽略這一步),先在一個節點上根據以下配置

參考安裝方法:https://www.cnblogs.com/jiashengmei/p/11991243.html

最終的zookeeper在zoo.cfg的內容如下,注意:只需要進行3個節點的zookeeper叢集配置即可

dataDir=/data
dataLogDir
=/datalog tickTime=2000 initLimit=5 syncLimit=2 autopurge.snapRetainCount=3 autopurge.purgeInterval=0 maxClientCnxns=60 standaloneEnabled=true admin.enableServer=true clientPort=12181 server.118=192.168.30.118:12888:13888 server.117=192.168.30.117:12888:13888 server.116=192.168.30.116:12888:13888 

3、安裝clickhouse

安裝方式:clickhouse的官網安裝方法:https://clickhouse.com/#quick-start

注意:如下的內容,每個

開始安裝

sudo apt-get install apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754

echo "deb https://packages.clickhouse.com/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的服務
clickhouse-client # or "clickhouse-client --password" if you set up a password.

驗證clickhouse是否安裝成功,執行命令

sudo service clickhouse-server status 

安裝完後的目錄,即存放安裝後文件的路徑:/etc/clickhouse-server

執行完如上的步驟,則執行如下的命令,檢視clickhouse是否部署成功

//客戶端連線,直接在命令列執行即可
clickhouse-client 

備註:clickhouse常用的其他命名

sudo service clickhouse-server start 
sudo service clickhouse-server restart    #重啟clickhouse
sudo service clickhouse-server status    #檢視clickhouse的狀態
sudo service clickhouse-server stop   #停止clickhouse

 叢集版的部署

1、修改config.xml檔案,修改後的內容如下

vim config.xml
<timezone>Asia/Shanghai</timezone>
 <listen_host>0.0.0.0</listen_host>   #在文件中有,此行取消註釋即可
 <include_from>/etc/clickhouse-server/metrika.xml</include_from>    #此行在conf文件中沒有,需要手動的新增上
<macros incl="macros" optional="true"/>
 <zookeeper>                                #根據zookeeper的配置IP,寫在這裡即可
        <node index="118">                  #"118"指的是:在zookeeper中的server.118後的數字,server.118=192.168.30.118:12888:13888
            <host>192.168.30.118</host>
            <port>12181</port>
        </node>
        <node index="117">
            <host>192.168.30.117</host>
            <port>12181</port>
        </node>
        <node index="116">
            <host>192.168.30.116</host>
            <port>12181</port>
        </node>
</zookeeper>

2、手動建立檔案:metrika.xml

vim metrika.xml

直接複製貼上如下的內容到metrika.xml文件中即可,注意修改自己的IP地址

<yandex>
    <clickhouse_remote_servers>
        <ck_cluster>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>192.168.30.118</host>
                    <port>9000</port>
            </replica>
                </shard>
                <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>192.168.30.117</host>
                    <port>9000</port>
            </replica>
                 </shard>
                 <shard>
                 <internal_replication>true</internal_replication>
                <replica>
                    <host>192.168.30.116</host>
                    <port>9000</port>
            </replica>
                 </shard>
                 <shard>
                 <internal_replication>true</internal_replication>
                <replica>
                    <host>192.168.30.115</host>
                    <port>9000</port>
            </replica>
                 </shard>
                 <shard>
                 <internal_replication>true</internal_replication>
                <replica>
                    <host>192.168.30.114</host>
                    <port>9000</port>
                </replica>
                 </shard>
        </ck_cluster>
    </clickhouse_remote_servers>
    <macros>
      <replica>192.168.30.118</replica>
    </macros>
    <networks>
        <ip>::</ip>
    </networks>

    <clickhouse_compression>
        <case>
            <min_part_size>10000000000</min_part_size>
            <min_part_size_ratio>0.01</min_part_size_ratio>
            <method>lz4</method>
        </case>
    </clickhouse_compression>
</yandex>

3、若需檢視clickhouse的log日誌,在config.xml檔案中就包含了,比如:

/var/log/clickhouse-server/clickhouse-server.log
/var/log/clickhouse-server/clickhouse-server.err.log

4、進行完如上的配置,重新啟動clickhouse,再次檢視clickhouse是否啟動成功

sudo service clickhouse-server restart    #重啟clickhouse
sudo service clickhouse-server status    #檢視clickhouse的狀態

˙注意:狀態也要是 active (running) 才可以

5、連線clickhouse資料庫,檢視叢集是否部署成功

 //客戶端連線
clickhouse-client

//驗證資料庫
show databases;

//檢視叢集
select * from system.clusters;

 6、驗證zookeeper是否與當前資料庫clickhouse進行了正確的配置,可以正確連線到

直接在clickhouse的資料庫中,輸入如下的命令進行驗證:

SELECT * FROM system.zookeeper WHERE path = '/clickhouse';

7、clickhouse資料中建立表,驗證叢集能力

create database test_ck;
CREATE TABLE test_ck.device_thing_data (
                time                     UInt64,
                user_id                 String,
                device_id                 String,
                source_id                 String,
                thing_id                   String,
                identifier                String,
                value_int32                Int32,
                value_float                Float32,
                value_double            Float64,
                value_string            String,
                value_enum              Enum8('0'=0,'1'=1,'2'=2,'3'=3,'4'=4,'5'=5,'6'=6,'7'=7,'8'=8),
                value_string_ex         String,
                value_array_string         Array(String),
                value_array_int32         Array(Int32),
                value_array_float         Array(Float32),
                value_array_double         Array(Float64),
                action_date                Date,
                action_time             DateTime
            ) Engine= ReplicatedMergeTree('/clickhouse/tables/01-02/device_thing_data','cluster01-02-1') PARTITION BY toYYYYMM(action_date) ORDER BY (user_id,device_id,thing_id,identifier,time,intHash64(time)) SAMPLE BY intHash64(time) SETTINGS index_granularity=8192建立分散式表用於查詢,在三臺每個機器上均執行如下sql:

建立分散式表用於查詢,在每個機器上均執行如下sql:

CREATE TABLE device_thing_data_all AS test_ck.device_thing_data ENGINE = Distributed(cluster_3s_1r, test_ck, device_thing_data, rand()) 

具體的內容可參考這篇文章:https://www.cnblogs.com/qa-freeroad/p/14394135.html