ClickHouse安裝使用(單機、集群、高可用)


Clickhouse版本:20.3.6.40-2

 

安裝包地址:https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/

一、單機版

1、安裝依賴

yum install libicu.x86_64

2、下載安裝包

http://repo.yandex.ru/clickhouse/rpm/

3、安裝

rpm -ivh *.rpm --force --nodeps

4、修改數據、日志目錄

vi /etc/clickhouse-server/config.xml

 

 

  

  

  

  

 5、創建相關目錄

只需創建log文件目錄即可

mkdir /bigdata/clickhouse

mkdir /bigdata/clickhouse/log

chown clickhouse:clickhouse /bigdata/clickhouse

chown clickhouse:clickhouse /bigdata/clickhouse/log

6、啟動

/etc/init.d/clickhouse-server start

/etc/init.d/clickhouse-server stop

7、登錄

由於9000與其它服務端口沖突,故tcp端口更改為9011

 clickhouse-client --host localhost --port 9011

 

二、集群版

1、修改配置文件(三分片、單副本)

分別在三個節點都創建文件,紅色字體每個節點配置不一樣

vim /etc/metrika.xml

<yandex>
    <clickhouse_remote_servers>
        <cluster-01>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>spbsjzy19</host>
                    <port>9011</port>
                    <user>rt</user>
                    <password>passwd</password>
                </replica>
            </shard>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>spbsjzy20</host>
                    <port>9011</port>
                    <user>rt</user>
                    <password>passwd</password>
                </replica>
            </shard>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>spbsjzy21</host>
                    <port>9011</port>
                    <user>rt</user>
                    <password>passwd</password>
                </replica>
            </shard>
        </cluster-01>
    </clickhouse_remote_servers>
    <zookeeper-servers>
        <node index="1">
            <host>spbsjzy33</host>
            <port>2181</port>
        </node>
        <node index="2">
            <host>spbsjzy34</host>
            <port>2181</port>
        </node>
        <node index="3">
            <host>spbsjzy35</host>
            <port>2181</port>
        </node>
    </zookeeper-servers>
     <macros>
      <cluster>cluster-01</cluster>
      <shard>01</shard>
      <replica>spbsjzy19</replica>
     <!-- <shard>02</shard> <replica>spbsjzy20</replica> <shard>03</shard> <replica>spbsjzy21</replica> -->
    </macros>
    <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>

注意:

1) <macros> </macros>中的shard名

三個節點配置相同則在任意一個節點插入數據,其他節點都會查詢到;不相同的話復制表之間數據不會同步(插入分布表,數據會隨機分配到某個節點的復制表;插入任意一個節點的復制表,分布表可以查詢到,其他節點復制表無法查到)

2) <macros> </macros>中 <cluster>表示集群名稱,<shard>表示分片編號,<replica>表示副本標識,這里使用了cluster{cluster}-{shard}-{replica}的表示方式

3)  <internal_replication>

如果設置為true,則往本地表寫入數據時,總是寫入到完整健康的副本里,然后由表自身完成復制,這就要求本地表是能自我復制的(推薦)。如果設置為false,則寫入數據時,是寫入到所有副本中。這時,是無法保證一致性的

4)  <user></user><password></password>

添加完后使用默認default用戶也可以查詢分布表。

相關報錯信息:

ru.yandex.clickhouse.except.ClickHouseException: ClickHouse exception, code: 516, host: spbsjzy20, port: 8123; Code: 516, e.displayText() = DB::Exception: Received from spbsjzy19:9011. DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name. (version 20.3.6.40 (official build))

 2、修改配置

vim /etc/clickhouse-server/config.xml

把注釋打開,否則節點之間無法訪問,分布表也無法查詢其它節點數據

 3、建議

生產中建議一般采用復制表和分布表;先創建復制表而后創建分布表,復制表用來存儲數據,分布表用來查詢和寫入

ReplacingMergeTree:

 4、創建表

分別在三個節點創建復制表:

分別在三個節點創建復制表: CREATE TABLE default.test (`eventdate` Date, `company` String, `deliveryno` String, `usercardtype` String, `id` String, `name` String, `mob` String, `orgcode` String, `creditcode` String, `taxregno` String, `type` String, `cardid` String, `staffna` String, `staffmob` String, `staffaddress` String, `checkdate` String, `method` String, `address` String, `utcdate` DateTime DEFAULT now()) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/test', '{replica}', eventdate, (eventdate, company, deliveryno, id, mob, name), 8192) 在一個節點創建分布表: CREATE TABLE default.test_all (`eventdate` Date, `company` String, `deliveryno` String, `usercardtype` String, `id` String, `name` String, `mob` String, `orgcode` String, `creditcode` String, `taxregno` String, `type` String, `cardid` String, `staffna` String, `staffmob` String, `staffaddress` String, `checkdate` String, `method` String, `address` String, `utcdate` DateTime DEFAULT now()) ENGINE = Distributed('{cluster}', 'default', 'test', rand()) 

5、插入表

insert into test(eventdate,company,deliveryno,id) VALUES('2020-12-05','ff','vv','xx'); insert into test_all(eventdate,company,deliveryno,id) VALUES('2020-12-06','xx','vv','xx');

6、數據分布測試

(1)三張復制表分別執行

insert into test(eventdate,company,deliveryno,id) VALUES('2020-12-07','ff','vv','xx'); insert into test(eventdate,company,deliveryno,id) VALUES('2020-12-08','ff','vv','xx'); insert into test(eventdate,company,deliveryno,id) VALUES('2020-12-09','ff','vv','xx');

查詢復制表:

   

  

  查詢分布表

  (2)插入分布表(隨機分布)

insert into test_all(eventdate,company,deliveryno,id) VALUES('2020-12-07','xx','vv','xx'); insert into test_all(eventdate,company,deliveryno,id) VALUES('2020-12-08','xx','vv','xx');

查詢復制表

  

  查詢分布表

  7、節點宕機測試

 

三、高可用版

1、新增配置文件

cp /etc/clickhouse-server/config.xml /etc/clickhouse-server/config1.xml

cp /etc/metrika.xml /etc/metrika1.xml

2、修改配置文件

端口:

vim /etc/clickhouse-server/config1.xml

<http_port>8124</http_port>

<tcp_port>9021</tcp_port>

<mysql_port>9014</mysql_port>

<interserver_http_port>9019</interserver_http_port>

目錄:

<log>/bigdata/clickhouse1/log/clickhouse-server.log</log>

<errorlog>/bigdata/clickhouse1/log/clickhouse-server.err.log</errorlog>

<path>/bigdata/clickhouse1/data/</path>

<tmp_path>/bigdata/clickhouse1/tmp/</tmp_path>

<user_files_path>/bigdata/clickhouse1/user_files/</user_files_path>

<format_schema_path>/bigdata/clickhouse1/format_schemas/</format_schema_path>

3、集群配置文件metrika.xml更改為自定義

mv /etc/metrika.xml /etc/clickhouse-server/metrika.xml

mv /etc/metrika1.xml /etc/clickhouse-server/metrika1.xml

vim /etc/clickhouse-server/config.xml(新增標簽)

<include_from>/etc/clickhouse-server/metrika.xml</include_from>

vim /etc/clickhouse-server/config1.xml

<include_from>/etc/clickhouse-server/metrika1.xml</include_from>

4、創建新實例目錄

mkdir /bigdata/clickhouse1

mkdir /bigdata/clickhouse1/log

修改權限

5、創建新實例啟動腳本

cp /etc/init.d/clickhouse-server /etc/init.d/clickhouse-server1

vim /etc/init.d/clickhouse-server1

修改配置文件

CLICKHOUSE_CONFIG=$CLICKHOUSE_CONFDIR/config1.xml

CLICKHOUSE_PIDFILE="$CLICKHOUSE_PIDDIR/$PROGRAM-1.pid"

6、修改metrika.xml文件,配置高可用

相同部分 <clickhouse_remote_servers>
<cluster-01>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>spbsjzy19</host>
<port>9011</port>
<user>rt</user>
<password>passwd</password>
</replica>
<replica>
<host>spbsjzy20</host>
<port>9021</port>
<user>rt</user>
<password>passwd</password>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>spbsjzy20</host>
<port>9011</port>
<user>rt</user>
<password>passwd</password>
</replica>
<replica>
<host>spbsjzy21</host>
<port>9021</port>
<user>rt</user>
<password>passwd</password>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>spbsjzy21</host>
<port>9011</port>
<user>rt</user>
<password>passwd</password>
</replica>
<replica>
<host>spbsjzy19</host>
<port>9021</port>
<user>rt</user>
<password>passwd</password>
</replica>
</shard>
</cluster-01>
</clickhouse_remote_servers> 不同部分 1節點clickhouse <macros>
<cluster>cluster-01</cluster>
<shard>01</shard>
<replica>cluster-01-01-01</replica>
</macros> 1節點clickhouse1 <macros>
<cluster>cluster-01</cluster>
<shard>03</shard>
<replica>cluster-01-03-02</replica>
</macros> 2節點clickhouse <macros>
<cluster>cluster-01</cluster>
<shard>02</shard>
<replica>cluster-01-02-01</replica>
</macros> 2節點clickhouse1 <macros>
<cluster>cluster-01</cluster>
<shard>01</shard>
<replica>cluster-01-01-02</replica>
</macros> 3節點clickhouse <macros>
<cluster>cluster-01</cluster>
<shard>03</shard>
<replica>cluster-01-03-01</replica>
</macros> 3節點clickhouse1 <macros>
<cluster>cluster-01</cluster>
<shard>02</shard>
<replica>cluster-01-02-02</replica>
 </macros>

7、添加用戶

默認是default用戶,沒有密碼,修改完無需重啟

vim /etc/clickhouse-server/users.xml

在<users></users>中添加

<rt>

<networks incl="networks" replace="replace">

<ip>::/0</ip>

</networks>

<profile>default</profile>

<quota>default</quota>

<password>passwd</password>

 </rt>

只讀配置:

 <profile>readonly</profile>

登錄:

clickhouse-client --host localhost --port 9011 -u rt --password 'passwd'

8、啟動

/etc/init.d/clickhouse-server start

/etc/init.d/clickhouse-server1 start

9、查看集群信息

 10、數據分布測試

(1) 插入復制表

分別在三個clickhouse(9011)實例執行

insert into test(eventdate,company,deliveryno,id) VALUES('2020-12-01','ff','vv','xx'); insert into test(eventdate,company,deliveryno,id) VALUES('2020-12-02','ff','vv','xx'); insert into test(eventdate,company,deliveryno,id) VALUES('2020-12-03','ff','vv','xx');

查詢復制表

Clickhouse實例:

 

 

 Clickhouse1實例:

 

 

 查詢分布表:

 (1) 插入分布表

insert into test_all(eventdate,company,deliveryno,id) VALUES('2020-12-01','ff','vv','xx');

查詢復制表:

Clickhouse實例

 Clickhouse1實例

 查詢分布表:

 11、節點宕機測試

 --------------------------------END --------------------------------

以上為本人親測,希望對大家有幫助,有問題多交流

 

 


免責聲明!

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



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