Clickhouse安裝及使用


一、下載安裝包

# wget -P 
# 下載到指定目錄

$ wget https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-client-21.8.4.51-2.noarch.rpm

$ wget https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-common-static-21.8.4.51-2.x86_64.rpm

$ wget https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-common-static-dbg-21.8.4.51-2.x86_64.rpm

$ wget https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-server-21.8.4.51-2.noarch.rpm

二、單機安裝

2.1 安裝

$ sudo rpm -ivh {CLICKHOUSE-HOME}/*.rpm

2.2 查看安裝情況

$ sudo rpm -qa|grep clickhouse

2.3 修改配置文件

$ sudo vim /etc/clickhouse-server/config.xml
# 1.打開listen_host,二選一
# 如果支持IPV6
<listen_host>::</listen_host>
# 如果支持IPV4
<listen_host>0.0.0.0</listen_host>

# 2.修改端口號,9000被python占用
<tcp_port>9099</tcp_port>

  # 默認數據文件路徑:<path>/var/lib/clickhouse/</path>
  # 默認日志文件路徑:<log>/var/log/clickhouse-server/clickhouse-server.log</log>

2.4 啟動server

$ sudo systemctl start clickhouse-server

2.5 查看server狀態

$ sudo systemctl status clickhouse-server

2.6 關閉server

$ sudo systemctl stop clickhouse-server

2.7 重啟server

$ sudo clickhouse restart

2.8 使用client連接server

$ clickhouse-client -m --password {PASSWORD} --port 9099 --user default --host {HOST}

2.9 驗證clickhouse是否可用

show databases;

use default;

show tables;

三、一分片兩副本集群搭建

3.1 創建 metrika.xml配置文件

# 1. 在/etc/clickhouse-server/config.d 目錄下創建一個名為 metrika.xml的配置文件
$ sudo vim /etc/clickhouse-server/config.d/metrika.xml
<?xml version="1.0"?>
<yandex>
 <remote_servers>
  <test_cluster>
   <shard>
    <internal_replication>true</internal_replication>
       <replica>
           <host>{host_01}</host>
           <port>9099</port>
       </replica>
       <replica>
           <host>{host_02}</host>
           <port>9099</port>
       </replica>
   </shard>
  </test_cluster>
 </remote_servers>

 <zookeeper-servers>
     <node index="1">
         <host>{host_01}</host>
         <port>2181</port>
     </node>
     <node index="2">
         <host>{host_02}</host>
         <port>2181</port>
     </node>
     <node index="3">
         <host>{host_03}</host>
         <port>2181</port>
     </node>
 </zookeeper-servers>

 <macros>
  <shard>01</shard>
  <replica>rep_1_1</replica>
 </macros>
</yandex>

3.2 修改/etc/clickhouse-server/config.xml

$ sudo vim /etc/clickhouse-server/config.xml
<zookeeper incl="zookeeper-servers" optional="true" /> 
<include_from>/etc/clickhouse-server/config.d/metrika.xml</include_from>

3.3 主機2安裝第二台clickhouse

  參考步驟2單機安裝

3.4 拷貝配置文件到主機2

$ sudo scp /etc/clickhouse-server/config.d/metrika.xml remote_user@remote_host:/etc/clickhouse-server/config.d/metrika.xml

$ sudo scp /etc/clickhouse-server/config.xml remote_user@remote_host:/etc/clickhouse-server/config.xml

3.5 主機2修改配置文件

$ sudo vim /etc/clickhouse-server/config.d/metrika.xml
 <macros>
  <shard>01</shard>
  <replica>rep_1_2</replica>
 </macros>

3.6 重啟clickhouse集群

$ sudo clickhouse restart

四、驗證集群

4.1 主機1創建本地表

create table test_local on cluster test_cluster (
    id UInt32,
    sku_id String,
    total_amount Decimal(16,2),
    create_time  Datetime
) engine=ReplicatedMergeTree('/clickhouse/tables/{shard}/test_local','{replica}')    
partition by toYYYYMMDD(create_time)    
primary key (id)    
order by (id,sku_id);

4.2 主機1創建分布式表

create table test_local_all on cluster test_cluster (
    id UInt32, 
    sku_id String,
    total_amount Decimal(16,2),
    create_time  Datetime 
) engine = Distributed(test_cluster,default,test_local,hiveHash(sku_id)); 

4.3 在主機1和主機2驗證表創建成功

show tables;

# 主機1和主機2上都有test_local表和test_local_all表,則證明建表成功

4.4 在主機1上向test_local_all表寫入數據

insert into test_local_all values (207,'sku_006',700.00,'2020-06-02 12:00:00');

4.5 在主機1和主機2上驗證數據寫入成功

select * from test_local;

select * from test_local_all;

# 如果主機1和主機2上的test_local和test_local_all共4個表查詢結果相同,則證明數據寫入成功

# 可以直接向本地表test_local寫入數據,來驗證4個表數據是否一致。

五、常見問題

5.1 服務器不支持IPV6

 

 解決方案:在/etc/clickhouse-server/config.xml中,注釋<listen_host>::</listen_host>,打開<listen_host>0.0.0.0</listen_host>

5.2 端口被占用

 

 解決方案:在/etc/clickhouse-server/config.xml中,修改<tcp_port>9000</tcp_port>為<tcp_port>9099</tcp_port>,在客戶端連接時,需要指定 --port 9099

5.3 查看日志

$ tail -n 100 /var/log/clickhouse-server/clickhouse-server.err.log

問題1:在使用副本時,日志報錯replicateMergetree異常,提示hostnamenotfound

解決方案:將提示找不到的hostname配置到/etc/hosts文件中,並source /etc/hosts使其生效

問題2:在啟動clickhouse-server時,日志報錯,提示已有進程在運行中

解決方案:查看 /var/lib/clickhouse/status文件,找到pid后,使用kill -9 pid,然后再啟動clickhouse-server

 


免責聲明!

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



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