1. 程式人生 > 其它 >ClickHouse單機以及叢集部署方式

ClickHouse單機以及叢集部署方式

ClickHouse單機以及叢集部署方式

單機部署

第一步:下載

yum install yum-utils
rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG
yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64

第二步:安裝與解除安裝

yum install clickhouse-server clickhouse-client

如果需要解除安裝clickhouse:

yum remove clickhouse-server clickhouse-client

第三步:修改配置檔案

clickhouse配置檔案地址:/etc/clickhouse-server/config.xml

  1. 建立資料夾,用來儲存日誌以及資料
mkdir -p /ccdata/clickhouse/log/clickhouse-server
mkdir -p /ccdata/clickhouse/tmp
mkdir -p /ccdata/clickhouse/user_files
mkdir -p /ccdata/clickhouse/format_schemas
mkdir -p /ccdata/clickhouse/access
  1. 修改目錄所有者和群組

在修改目錄所有者和群組之前需要先建立一個clickhouse的使用者

#建立clickhouse的使用者在群組clickhouse下面
useradd -m -g clickhouse clickhouse
#更改檔案屬性,讓檔案可寫
chattr -i /etc/passwd
#修改目錄所有者和群組
chown -R clickhouse:clickhouse /ccdata/clickhouse
chown -R clickhouse:clickhouse /etc/clickhouse-server

chattr命令

  1. 修改配置檔案許可權
chmod 777 /etc/clickhouse-server/config.xml
chmod 777 /etc/clickhouse-server/users.xml
  1. 修改配置檔案config和user

修改config.xml的如下標籤

<log>/ccdata/clickhouse/log/clickhouse-server/clickhouse-server.log</log>
<errorlog>/ccdata/clickhouse/log/clickhouse-server/clickhouse-server.err.log</errorlog>
<path>/ccdata/clickhouse/</path>
<tmp_path>/ccdata/clickhouse/tmp/</tmp_path>
<user_files_path>/ccdata/clickhouse/user_files/</user_files_path>
<format_schema_path>/ccdata/clickhouse/format_schemas/</format_schema_path>
<path>/ccdata/clickhouse/access/</path>
<max_table_size_to_drop>0</max_table_size_to_drop>
<max_partition_size_to_drop>0</max_partition_size_to_drop>
<listen_host>::</listen_host>

user.xml

<!--新增客戶端連結的密碼-->
<password>clickhouse</password>
  1. 服務的命令
#啟動:
systemctl start clickhouse-server
#停止:
systemctl stop clickhouse-server
#檢視狀態:
systemctl status clickhouse-server

叢集部署

叢集部署在所有機器單機部署完成後進行

第一步:新增分散式配置檔案

vi /etc/metrika.xml

檔案內容

<?xml version="1.0" encoding="utf-8"?>
 
<yandex>
  <clickhouse_remote_servers>
    <!-- 叢集名字,自定義 -->
    <clickhouse_cluster>
      <!-- 定義一個分片 -->
      <shard>
        <!-- Optional. Shard weight when writing data. Default: 1. -->
        <weight>1</weight>
        <!-- Optional. Whether to write data to just one of the replicas. Default: false (write data to all replicas). -->
        <internal_replication>true</internal_replication>
        <!-- 這個分片的副本存在在哪些機器上 -->
        <replica>
          <host>ch3</host>
          <port>9001</port>
        </replica>
        <replica>
          <host>ch2</host>
          <port>9001</port>
        </replica>
      </shard>
    </clickhouse_cluster>
  </clickhouse_remote_servers>
 
  <zookeeper-servers>
    <node>
      <host>ch1</host>
      <port>8888</port>
    </node>
  </zookeeper-servers>
 
  <!-- 在分散式表中的這個 shard 內只選擇一個合適的 replica 寫入資料。如果為本地表引擎為 ReplicatedMergeTree ,多個副本之間的資料交由引擎自己處理 -->
  <macros>
    <layer>01</layer>
    <shard>03</shard>
    <replica>ch2</replica>
  </macros>
</yandex>

第二步:修改config.xml

首先刪除config.xml中的remote_servers標籤的所有配置,新增如下配置(添加了incl後會去metrika.xml中讀取對應的配置)

<remote_servers incl="clickhouse_remote_servers" />
<zookeeper incl="zookeeper-servers" optional="true" />
<macros incl="macros" optional="true" />

第三步:啟動叢集驗證

每臺機器都啟動clickhouse,驗證叢集是否啟動成功

SELECT * FROM system.clusters;