ClickHouse 3节点集群安装

ClickHouse 简介

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。

在这里插入图片描述
官方网站:https://clickhouse.com/

项目地址:https://github.com/ClickHouse/ClickHouse

横向扩展集群介绍

此示例架构旨在提供可扩展性。它包括三个节点:两个组合的 ClickHouse 加协调(ClickHouse Keeper)服务器,以及第三个仅包含 ClickHouse Keeper 的服务器,以完成三个节点的法定人数。在这个示例中,我们将创建一个数据库、表和一个分布式表,以便能够查询两个节点上的数据。

基本概念

Replica

数据副本。 ClickHouse 始终至少拥有一份数据副本,因此副本的最小数量为 1。这是一个重要的细节,您可能不习惯将数据的原始副本算作副本,但这是 ClickHouse 代码和文档中使用的术语。添加数据的第二个副本可提供容错能力。

Shard

数据的子集。 ClickHouse 始终为您的数据提供至少一个分片,因此如果您不将数据拆分到多个服务器上,您的数据将存储在一个分片中。如果超出单个服务器的容量,可以使用将数据分片到多个服务器来划分负载。目标服务器由分片键决定,在创建分布式表时定义。分片密钥可以是随机的,也可以是哈希函数的输出。涉及分片的部署示例将使用rand()作为分片键,并将提供有关何时以及如何选择不同分片键的更多信息。

Distributed coordination

ClickHouse Keeper 提供数据复制和分布式 DDL 查询执行的协调系统。 ClickHouse Keeper 与 Apache ZooKeeper 兼容。

环境架构图

官方文档:https://clickhouse.com/docs/en/architecture/horizontal-scaling

我们将安装一个在 2 个节点上运行的 Clickhouse 集群,在这两台服务器上运行clickhouse-keeper,以及一个独立运行的 clickhouse-keeper。可以使用 apt install 进行在线安装。

整体部署架构如下图所示:
在这里插入图片描述

节点清单

主机名节点IP操作系统节点配置节点角色
chnode1192.168.72.51Ubuntu22.042C/4G/100G DISKClikhouse keeper , Clickhose server, client
chnode2192.168.72.52Ubuntu22.042C/4G/100G DISKClikhouse keeper , Clickhose server, client
chnode3192.168.72.53Ubuntu22.042C/4G/100G DISKClikhouse keeper

说明:

  • chnode3用于 ClickHouse Keeper 法定人数
  • 在生产环境中,强烈建议 ClickHouse Keeper 在专用主机上运行。此基本配置在 ClickHouse 服务器进程中运行 Keeper 功能。官方安装文档中提供了独立部署 ClickHouse Keeper 的说明。

在所有节点上配置主机名

hostnamectl set-hostname chnode1
hostnamectl set-hostname chnode2
hostnamectl set-hostname chnode3

在所有节点上编辑 /etc/hosts 文件

cat >/etc/hosts<<EOF
192.168.72.51 chnode1 chnode1.example.com
192.168.72.52 chnode2 chnode2.example.com
192.168.72.53 chnode3 chnode3.example.com
EOF

安装clickhouse

官方文档:https://clickhouse.com/docs/en/install

chnode1和chnode2执行

节点1和节点2不需要安装ClickHouse Keeper,不能一起安装,如果要在服务器上使用keeper,可以通过config设置来完成。

sudo apt-get install -y 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

说明:安装过程中注意为clickhouse-server默认用户default设置密码。

查看安装版本

root@chnode1:~# clickhouse --version
ClickHouse local version 24.9.2.42 (official build).

chnode3执行

在节点 3 上仅安装clickhose-keeper 。ClickHouse 服务器中有一个捆绑包,如果正在安装服务器,则无法单独安装 clickhouse-keeper,会收到冲突错误,但是,如果我们有仅用作 clickhouse-keeper 的服务器,这里只能安装clickhouse-keeper,无需安装服务器。

sudo apt-get install -y 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-keeper

检查安装版本

root@chnode3:~# clickhouse-keeper --version
ClickHouse keeper version 24.9.2.42 (official build).

创建clickhose-keeper相关目录

mkdir -p /etc/clickhouse-keeper/config.d
mkdir -p /var/log/clickhouse-keeper
mkdir -p /var/lib/clickhouse-keeper/coordination/log
mkdir -p /var/lib/clickhouse-keeper/coordination/snapshots
mkdir -p /var/lib/clickhouse-keeper/cores
chown -R clickhouse.clickhouse /etc/clickhouse-keeper /var/log/clickhouse-keeper /var/lib/clickhouse-keeper

编辑chnode1配置文件

对于chnode1,有五个配置文件。您可以选择将这些文件合并为一个文件,但为了文档的清晰性,单独查看它们可能会更简单。当你阅读配置文件时,你会发现 chnode1 和 chnode2 之间的大部分配置是相同的;差异将被突出显示。

网络和日志记录配置

这些值可以根据您的意愿进行定制。此示例配置为您提供了一个debug级别的调试日志,并且日志文件会在大小达到 1000M时触发轮转(roll over)。轮转的操作会保留三份之前的日志文件。ClickHouse 将在端口 8123 和 9000 上侦听 IPv4 网络,并将使用端口 9009 进行服务器间通信。

chnode1 上的 network-and-logging.xml

root@chnode1:~# cat /etc/clickhouse-server/config.d/network-and-logging.xml
<clickhouse>
        <logger>
                <level>debug</level>
                <log>/var/log/clickhouse-server/clickhouse-server.log</log>
                <errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>
                <size>1000M</size>
                <count>3</count>
        </logger>
        <display_name>clickhouse</display_name>
        <listen_host>0.0.0.0</listen_host>
        <http_port>8123</http_port>
        <tcp_port>9000</tcp_port>
        <interserver_http_port>9009</interserver_http_port>
        <interserver_listen_host>0.0.0.0</interserver_listen_host>
</clickhouse>

ClickHouse Keeper配置

ClickHouse Keeper 提供数据复制和分布式 DDL 查询执行的协调系统。 ClickHouse Keeper 与 Apache ZooKeeper 兼容。此配置在端口 9181 上启用 ClickHouse Keeper。突出显示的行指定该 Keeper 实例的server_id为 1。这是三台服务器的enable-keeper.xml文件中的唯一区别。 chnode2server_id设置为2chnode3server_id设置为3 。所有三台服务器上的 raft 配置部分都是相同的,下面突出显示它以向您展示 raft 配置中server_idserver实例之间的关系。

说明:

如果出于任何原因更换或重建 Keeper 节点,请勿重复使用现有的server_id 。例如,如果重建了server_id2的Keeper节点,则将其server_id设置为4或更高。

在 chnode1 上创建enable-keeper.xml

root@chnode1:~# cat /etc/clickhouse-server/config.d/enable-keeper.xml
<clickhouse>
  <keeper_server>
    <tcp_port>9181</tcp_port>
    <server_id>1</server_id>
    <log_storage_path>/var/lib/clickhouse/coordination/log</log_storage_path>
    <snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path>

    <coordination_settings>
        <operation_timeout_ms>10000</operation_timeout_ms>
        <session_timeout_ms>30000</session_timeout_ms>
        <raft_logs_level>trace</raft_logs_level>
    </coordination_settings>

    <raft_configuration>
        <server>
            <id>1</id>
            <hostname>chnode1</hostname>
            <port>9234</port>
        </server>
        <server>
            <id>2</id>
            <hostname>chnode2</hostname>
            <port>9234</port>
        </server>
        <server>
            <id>3</id>
            <hostname>chnode3</hostname>
            <port>9234</port>
        </server>
    </raft_configuration>
  </keeper_server>
</clickhouse>

宏配置

shardreplica降低了分布式 DDL 的复杂性。配置的值会自动替换到您的 DDL 查询中,从而简化您的 DDL。此配置的宏指定每个节点的分片和副本数量。
在此 2 分片 1 副本示例中,chnode1 和 chnode2 上的副本宏均为replica_1 ,因为只有一个副本。 chnode1 上的分片宏为1 ,chnode2 上的分片宏为2

chnode1 上的 Macros.xml

root@chnode1:~# cat /etc/clickhouse-server/config.d/Macros.xml
<clickhouse>
  <macros>
    <shard>1</shard>
    <replica>replica_1</replica>
  </macros>
</clickhouse>

复制和分片配置

从顶部开始:

  • XML 的remote_servers部分指定环境中的每个集群。属性replace=true将默认ClickHouse配置中的示例remote_servers替换为此文件中指定的remote_servers配置。如果没有此属性,此文件中的远程服务器将被追加到默认的示例列表中。
  • 在此示例中,有一个名为cluster_2S_1R的集群。
  • 为名为cluster_2S_1R的集群创建一个机密,其值为mysecretphrase 。该秘密在环境中的所有远程服务器之间共享,以确保正确的服务器连接在一起。
  • 集群cluster_2S_1R有两个分片,每个分片都有一个副本。查看本文档开头的架构图,并将其与下面 XML 中的两个shard定义进行比较。在每个分片定义中都有一个副本。该副本适用于该特定分片。该副本的主机和端口已指定。配置中第一个分片的副本存储在chnode1上,配置中第二个分片的副本存储在chnode2上。
  • 分片的内部复制设置为 true。每个分片都可以在配置文件中定义internal_replication参数。如果该参数设置为true,则写操作会选择第一个健康的副本并向其写入数据。

chnode1 上的remote-servers.xml

root@chnode1:~# cat /etc/clickhouse-server/config.d/remote-servers.xml
<clickhouse>
  <remote_servers replace="true">
    <cluster_2S_1R>
    <secret>mysecretphrase</secret>
        <shard>
            <internal_replication>true</internal_replication>
            <replica>
                <host>chnode1</host>
                <port>9000</port>
            </replica>
        </shard>
        <shard>
            <internal_replication>true</internal_replication>
            <replica>
                <host>chnode2</host>
                <port>9000</port>
            </replica>
        </shard>
    </cluster_2S_1R>
  </remote_servers>
</clickhouse>

配置Keeper的使用

上面几个文件配置了ClickHouse Keeper。此配置文件use-keeper.xml将 ClickHouse Server 配置为使用 ClickHouse Keeper 来协调复制和分布式 DDL。该文件指定 ClickHouse Server 应在端口 9181 上的节点 chnode1 - 3 上使用 Keeper,并且该文件在chnode1chnode2上相同。

在 chnode1 上创建enable-keeper.xml

root@chnode1:~# cat /etc/clickhouse-server/config.d/enable-keeper.xml
<clickhouse>
    <zookeeper>
        <node index="1">
            <host>chnode1</host>
            <port>9181</port>
        </node>
        <node index="2">
            <host>chnode2</host>
            <port>9181</port>
        </node>
        <node index="3">
            <host>chnode3</host>
            <port>9181</port>
        </node>
    </zookeeper>
</clickhouse>

chnode2配置

由于chnode1和chnode2上的配置非常相似,因此这里仅指出差异。

网络和日志记录配置

chnode2 上的network-and-logging.xml

root@chnode2:~# cat /etc/clickhouse-server/config.d/network-and-logging.xml
<clickhouse>
        <logger>
                <level>debug</level>
                <log>/var/log/clickhouse-server/clickhouse-server.log</log>
                <errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>
                <size>1000M</size>
                <count>3</count>
        </logger>
        <display_name>clickhouse</display_name>
        <listen_host>0.0.0.0</listen_host>
        <http_port>8123</http_port>
        <tcp_port>9000</tcp_port>
        <interserver_http_port>9009</interserver_http_port>
        <interserver_listen_host>0.0.0.0</interserver_listen_host>
</clickhouse>

ClickHouse Keeper配置

该文件包含 chnode1 和 chnode2 之间的两个差异之一。在 Keeper 配置中, server_id设置为2

在 chnode2 上创建enable-keeper.xml

root@chnode2:~# cat /etc/clickhouse-server/config.d/enable-keeper.xml
<clickhouse>
  <keeper_server>
    <tcp_port>9181</tcp_port>
    <server_id>2</server_id>
    <log_storage_path>/var/lib/clickhouse/coordination/log</log_storage_path>
    <snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path>

    <coordination_settings>
        <operation_timeout_ms>10000</operation_timeout_ms>
        <session_timeout_ms>30000</session_timeout_ms>
        <raft_logs_level>trace</raft_logs_level>
    </coordination_settings>

    <raft_configuration>
        <server>
            <id>1</id>
            <hostname>chnode1</hostname>
            <port>9234</port>
        </server>
        <server>
            <id>2</id>
            <hostname>chnode2</hostname>
            <port>9234</port>
        </server>
        <server>
            <id>3</id>
            <hostname>chnode3</hostname>
            <port>9234</port>
        </server>
    </raft_configuration>
  </keeper_server>
</clickhouse>

宏配置

宏配置在 chnode1 和 chnode2 之间存在差异之一。该节点上的shard设置为2

chnode2 上的 Macros.xml

root@chnode2:~# cat /etc/clickhouse-server/config.d/Macros.xml
<clickhouse>
<macros>
    <shard>2</shard>
    <replica>replica_1</replica>
</macros>
</clickhouse>

复制和分片配置

chnode2 上的remote-servers.xml

root@chnode2:~# cat /etc/clickhouse-server/config.d/remote-servers.xml
<clickhouse>
  <remote_servers replace="true">
    <cluster_2S_1R>
    <secret>mysecretphrase</secret>
        <shard>
            <internal_replication>true</internal_replication>
            <replica>
                <host>chnode1</host>
                <port>9000</port>
            </replica>
        </shard>
            <shard>
            <internal_replication>true</internal_replication>
            <replica>
                <host>chnode2</host>
                <port>9000</port>
            </replica>
        </shard>
    </cluster_2S_1R>
  </remote_servers>
</clickhouse>

配置Keeper的使用

在 chnode2 上配置use-keeper.xml

root@chnode2:~# cat /etc/clickhouse-server/config.d/use-keeper.xml
<clickhouse>
    <zookeeper>
        <node index="1">
            <host>chnode1</host>
            <port>9181</port>
        </node>
        <node index="2">
            <host>chnode2</host>
            <port>9181</port>
        </node>
        <node index="3">
            <host>chnode3</host>
            <port>9181</port>
        </node>
    </zookeeper>
</clickhouse>

chnode3配置

由于 chnode3 不存储数据,仅用于 ClickHouse Keeper 提供仲裁中的第三个节点,因此 chnode3 只有两个配置文件,一个用于配置网络和日志记录,另一个用于配置 ClickHouse Keeper。

ClickHouse Keeper配置

在 chnode3 上创建enable-keeper.xml

root@chnode3:~# cat /etc/clickhouse-keeper/config.d/enable-keeper.xml
<clickhouse>
  <keeper_server>
    <tcp_port>9181</tcp_port>
    <server_id>3</server_id>
    <log_storage_path>/var/lib/clickhouse/coordination/log</log_storage_path>
    <snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path>

    <coordination_settings>
        <operation_timeout_ms>10000</operation_timeout_ms>
        <session_timeout_ms>30000</session_timeout_ms>
        <raft_logs_level>trace</raft_logs_level>
    </coordination_settings>

    <raft_configuration>
        <server>
            <id>1</id>
            <hostname>chnode1</hostname>
            <port>9234</port>
        </server>
        <server>
            <id>2</id>
            <hostname>chnode2</hostname>
            <port>9234</port>
        </server>
        <server>
            <id>3</id>
            <hostname>chnode3</hostname>
            <port>9234</port>
        </server>
    </raft_configuration>
  </keeper_server>
  <listen_host>0.0.0.0</listen_host>
  <interserver_listen_host>0.0.0.0</interserver_listen_host>
</clickhouse>

启动服务

检查配置文件

最后运行并检查整个配置目录结构,除上述提到的配置,其他都为默认配置文件。
chnode1配置:

root@chnode1:~# apt install -y tree
root@chnode1:~# tree /etc/clickhouse-server/
/etc/clickhouse-server/
├── config.d
│   ├── enable-keeper.xml
│   ├── Macros.xml
│   ├── network-and-logging.xml
│   ├── remote-servers.xml
│   └── use-keeper.xml
├── config.xml
├── users.d
│   └── default-password.xml
└── users.xml

2 directories, 8 files

chnode2配置:

root@chnode2:~# apt install -y tree
root@chnode2:~# tree /etc/clickhouse-server/
/etc/clickhouse-server/
├── config.d
│   ├── enable-keeper.xml
│   ├── Macros.xml
│   ├── network-and-logging.xml
│   ├── remote-servers.xml
│   └── use-keeper.xml
├── config.xml
├── users.d
│   └── default-password.xml
└── users.xml

2 directories, 8 files

chnode3配置:

root@chnode3:~# apt install -y tree
root@chnode3:~# tree /etc/clickhouse-keeper/
/etc/clickhouse-keeper/
├── config.d
│   └── enable-keeper.xml
├── keeper_config-preprocessed.xml
└── keeper_config.xml

1 directory, 3 files

在chnode1和chnode2中启动服务

仅需启动clickhouse-server服务

systemctl enable --now clickhouse-server.service

查看chnode1 clickhouse-server服务运行状态

root@chnode1:~# systemctl status clickhouse-server.service 
● clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
     Loaded: loaded (/lib/systemd/system/clickhouse-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-10-25 23:49:59 CST; 9h ago
   Main PID: 2267 (clickhouse-serv)
      Tasks: 730 (limit: 4556)
     Memory: 1.1G
        CPU: 2h 37min 58.467s
     CGroup: /system.slice/clickhouse-server.service
             ├─2264 clickhouse-watchdog "" "" "" "" "" "" "" --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid
             └─2267 /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid

Oct 25 23:49:40 chnode1 clickhouse-server[2264]: Processing configuration file '/etc/clickhouse-server/config.xml'.
Oct 25 23:49:40 chnode1 clickhouse-server[2264]: Merging configuration file '/etc/clickhouse-server/config.d/Macros.xml'.
Oct 25 23:49:40 chnode1 clickhouse-server[2264]: Merging configuration file '/etc/clickhouse-server/config.d/enable-keeper.xml'.
Oct 25 23:49:40 chnode1 clickhouse-server[2264]: Merging configuration file '/etc/clickhouse-server/config.d/network-and-logging.xml'.
Oct 25 23:49:40 chnode1 clickhouse-server[2264]: Merging configuration file '/etc/clickhouse-server/config.d/remote-servers.xml'.
Oct 25 23:49:40 chnode1 clickhouse-server[2264]: Merging configuration file '/etc/clickhouse-server/config.d/use-keeper.xml'.
Oct 25 23:49:40 chnode1 clickhouse-server[2264]: Logging debug to /var/log/clickhouse-server/clickhouse-server.log
Oct 25 23:49:40 chnode1 clickhouse-server[2264]: Logging errors to /var/log/clickhouse-server/clickhouse-server.err.log
Oct 25 23:49:40 chnode1 systemd[1]: clickhouse-server.service: Supervising process 2267 which is not our child. We'll most likely not notice when it exits.
Oct 25 23:49:59 chnode1 systemd[1]: Started ClickHouse Server (analytic DBMS for big data).
root@chnode1:~# 

查看chnode2 clickhouse-server服务运行状态

root@chnode2:~# systemctl status clickhouse-server.service
● clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
     Loaded: loaded (/lib/systemd/system/clickhouse-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-10-25 23:49:59 CST; 9h ago
   Main PID: 2149 (clickhouse-serv)
      Tasks: 733 (limit: 4556)
     Memory: 902.9M
        CPU: 2h 31min 49.440s
     CGroup: /system.slice/clickhouse-server.service
             ├─2146 clickhouse-watchdog "" "" "" "" "" "" "" --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid
             └─2149 /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid

Oct 25 23:49:56 chnode2 clickhouse-server[2146]: Processing configuration file '/etc/clickhouse-server/config.xml'.
Oct 25 23:49:56 chnode2 clickhouse-server[2146]: Merging configuration file '/etc/clickhouse-server/config.d/Macros.xml'.
Oct 25 23:49:56 chnode2 clickhouse-server[2146]: Merging configuration file '/etc/clickhouse-server/config.d/enable-keeper.xml'.
Oct 25 23:49:56 chnode2 clickhouse-server[2146]: Merging configuration file '/etc/clickhouse-server/config.d/network-and-logging.xml'.
Oct 25 23:49:56 chnode2 clickhouse-server[2146]: Merging configuration file '/etc/clickhouse-server/config.d/remote-servers.xml'.
Oct 25 23:49:56 chnode2 clickhouse-server[2146]: Merging configuration file '/etc/clickhouse-server/config.d/use-keeper.xml'.
Oct 25 23:49:56 chnode2 clickhouse-server[2146]: Logging debug to /var/log/clickhouse-server/clickhouse-server.log
Oct 25 23:49:56 chnode2 clickhouse-server[2146]: Logging errors to /var/log/clickhouse-server/clickhouse-server.err.log
Oct 25 23:49:56 chnode2 systemd[1]: clickhouse-server.service: Supervising process 2149 which is not our child. We'll most likely not notice when it exits.
Oct 25 23:49:59 chnode2 systemd[1]: Started ClickHouse Server (analytic DBMS for big data).
root@chnode2:~# 

在chnode3中启动服务
仅需启动clickhouse-keeper服务

systemctl enable --now clickhouse-keeper.service

查看clickhouse-keeper服务运行状态

root@chnode3:~# systemctl status clickhouse-keeper.service 
● clickhouse-keeper.service - ClickHouse Keeper - zookeeper compatible distributed coordination server
     Loaded: loaded (/lib/systemd/system/clickhouse-keeper.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-10-25 23:55:58 CST; 9h ago
   Main PID: 3694 (clickhouse-keep)
      Tasks: 41 (limit: 4556)
     Memory: 70.6M
        CPU: 3min 6.234s
     CGroup: /system.slice/clickhouse-keeper.service
             └─3694 /usr/bin/clickhouse-keeper --config=/etc/clickhouse-keeper/keeper_config.xml --pid-file=/run/clickhouse-keeper/clickhouse-keeper.pid

Oct 25 23:55:58 chnode3 systemd[1]: Started ClickHouse Keeper - zookeeper compatible distributed coordination server.
Oct 25 23:55:58 chnode3 clickhouse-keeper[3694]: Processing configuration file '/etc/clickhouse-keeper/keeper_config.xml'.
Oct 25 23:55:58 chnode3 clickhouse-keeper[3694]: Logging trace to /var/log/clickhouse-keeper/clickhouse-keeper.log
Oct 25 23:55:58 chnode3 clickhouse-keeper[3694]: Logging errors to /var/log/clickhouse-keeper/clickhouse-keeper.err.log

我们来看看我们的Click Keeper服务,谁是leader?谁是follower?

对于 Node1; (追随者)

root@chnode1:~# echo mntr | nc localhost 9181
zk_version      v24.9.2.42-stable-de7c791a2eadce4093409574d6560d2332b0dd18
zk_avg_latency  0
zk_max_latency  0
zk_min_latency  0
zk_packets_received     0
zk_packets_sent 0
zk_num_alive_connections        0
zk_outstanding_requests 0
zk_server_state follower
zk_znode_count  21
zk_watch_count  0
zk_ephemerals_count     0
zk_approximate_data_size        4314
zk_key_arena_size       0
zk_latest_snapshot_size 0
zk_open_file_descriptor_count   64
zk_max_file_descriptor_count    500000

对于节点 2;如下所示,处于leader地位

root@chnode2:~# echo mntr | nc localhost 9181
zk_version      v24.9.2.42-stable-de7c791a2eadce4093409574d6560d2332b0dd18
zk_avg_latency  4
zk_max_latency  70
zk_min_latency  0
zk_packets_received     98
zk_packets_sent 102
zk_num_alive_connections        2
zk_outstanding_requests 0
zk_server_state leader
zk_znode_count  21
zk_watch_count  2
zk_ephemerals_count     0
zk_approximate_data_size        4314
zk_key_arena_size       0
zk_latest_snapshot_size 0
zk_open_file_descriptor_count   69
zk_max_file_descriptor_count    500000
zk_followers    2
zk_synced_followers     2

对于节点 3;追随者

root@chnode3:~# echo mntr | nc localhost 9181
zk_version      v24.9.2.42-stable-de7c791a2eadce4093409574d6560d2332b0dd18
zk_avg_latency  0
zk_max_latency  0
zk_min_latency  0
zk_packets_received     0
zk_packets_sent 0
zk_num_alive_connections        0
zk_outstanding_requests 0
zk_server_state standalone
zk_znode_count  4
zk_watch_count  0
zk_ephemerals_count     0
zk_approximate_data_size        578
zk_key_arena_size       0
zk_latest_snapshot_size 100
zk_open_file_descriptor_count   36
zk_max_file_descriptor_count    500000
zk_followers    0
zk_synced_followers     0

通过clickhouse-client客户端连接到clickhouse,密码为安装clickhouse时设置的密码

root@chnode1:~# clickhouse-client 
ClickHouse client version 24.9.2.42 (official build).
Connecting to localhost:9000 as user default.
Password for user (default): 
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 24.9.2.

Warnings:
 * Delay accounting is not enabled, OSIOWaitMicroseconds will not be gathered. You can enable it using `echo 1 > /proc/sys/kernel/task_delayacct` or by using sysctl.
 * Maximum number of threads is lower than 30000. There could be problems with handling a lot of simultaneous queries.

clickhouse :) 

查看实例及副本,示例输出如下:

clickhouse :) SELECT
    host_name,
    host_address,
    replica_num
FROM system.clusters

SELECT
    host_name,
    host_address,
    replica_num
FROM system.clusters

Query id: 3c4fde97-583b-4819-ba47-e368c0e9dd8b

   ┌─host_name─┬─host_address──┬─replica_num─┐
1. │ chnode1   │ 192.168.72.5112. │ chnode2   │ 192.168.72.521 │
   └───────────┴───────────────┴─────────────┘

2 rows in set. Elapsed: 0.002 sec. 

测试集群

1、连接chnode1 ,验证上面配置的集群cluster_2S_1R是否存在

clickhouse :) SHOW CLUSTERS

SHOW CLUSTERS

Query id: 40f7932e-4ff8-4101-aa6b-d4378c22e744

   ┌─cluster───────┐
1. │ cluster_2S_1R │
   └───────────────┘

1 row in set. Elapsed: 0.003 sec. 

clickhouse :) 

2、在集群上创建数据库

CREATE DATABASE db1 ON CLUSTER cluster_2S_1R
┌─host────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ chnode2 │ 90000 │       │                   10 │
│ chnode1 │ 90000 │       │                   00 │
└─────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘

3、在集群上使用MergeTree表引擎创建表。

笔记
我们不需要在表引擎上指定参数,因为这些参数将根据我们的宏自动定义

CREATE TABLE db1.table1 ON CLUSTER cluster_2S_1R
(
    `id` UInt64,
    `column1` String
)
ENGINE = MergeTree
ORDER BY id
┌─host────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ chnode1 │ 90000 │       │                   10 │
│ chnode2 │ 90000 │       │                   00 │
└─────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘

4、连接到chnode1并插入一行

INSERT INTO db1.table1 (id, column1) VALUES (1, 'abc');

5、连接到chnode2并插入一行

INSERT INTO db1.table1 (id, column1) VALUES (2, 'def');

6、连接到任一节点chnode1chnode2 ,您将仅看到插入到该节点上的表中的行。例如,在chnode2

SELECT * FROM db1.table1;
┌─id─┬─column1─┐
│  2 │ def     │
└────┴─────────┘

7、创建一个分布式表来查询两个节点上的两个分片。 (在本例中, rand()函数被设置为分片键,以便它随机分布每个插入)

CREATE TABLE db1.table1_dist ON CLUSTER cluster_2S_1R
(
    `id` UInt64,
    `column1` String
)
ENGINE = Distributed('cluster_2S_1R', 'db1', 'table1', rand())
┌─host────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ chnode2 │ 90000 │       │                   10 │
│ chnode1 │ 90000 │       │                   00 │
└─────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘

8、连接到chnode1chnode2并查询分布式表以查看这两行。

SELECT * FROM db1.table1_dist;
┌─id─┬─column1─┐
│  2 │ def     │
└────┴─────────┘
┌─id─┬─column1─┐
│  1 │ abc     │
└────┴─────────┘

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/903137.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习课程学习周报十八

机器学习课程学习周报十八 文章目录 机器学习课程学习周报十八摘要Abstract一、机器学习部分1. 再探Diffusion的数学原理1.1 回顾生成模型的任务1.2 DDPM (Denoising Diffusion Probabilistic Models)1.3 DDPM的证据下界 总结 摘要 本周周报深入探讨了Diffusion模型的数学原理…

JsonCpp库学习记录

使用源码的方式 到JsonCpp的开源库仓库下载最新的发行版本 解压压缩包 使用Python生成源码文件 在本路径下cmd打开控制台&#xff0c;使用python编译&#xff08;前提是python环境已安装&#xff09; python amalgamate.py 生成dist文件夹 jsoncpp为整合在一起的源码&#…

数通自学——VLAN虚拟局域网,eNSP实验讲解

VLAN虚拟局域网&#xff0c;eNSP实验讲解 一、概念二、eNSP仿真实验1、实验一&#xff1a;vlan演示&#xff08;交换机端口access模式&#xff09;2、实验二&#xff1a;vlan演示&#xff08;交换机端口trunk模式&#xff09; 一、概念 VLAN&#xff08;Virtual Local Area Ne…

vmware运维技巧总结

vmware使用实践总结 技巧一、在线添加硬盘技巧二、lvm脚本挂载硬盘 技巧一、在线添加硬盘 适用于不重启vmware虚拟机添加硬盘 首先控制台新加一块100G的硬盘 此时虚拟机内部是识别不到的&#xff0c;lsblk查看如下 不重启的情况下&#xff0c;采用如下方案 步骤一、查找主机…

智慧港口大屏可视化产品原型设计

全球贸易的快速发展和技术的不断进步&#xff0c;港口作为国际贸易的重要枢纽&#xff0c;其运营效率和管理水平直接影响到全球供应链的顺畅。智慧港口的概念应运而生&#xff0c;旨在通过新一代信息技术&#xff0c;将港口相关业务和管理创新深度融合&#xff0c;实现港口的高…

使用 Qt GRPC 构建高效的 Trojan-Go 客户端:详细指南

使用 Qt GRPC 构建高效的 Trojan-Go 客户端&#xff1a;详细指南 初识 Qt 和 gRPC 什么是 Qt&#xff1f;什么是 gRPC&#xff1f; 项目结构概述创建 proto 文件定义 API 下载 api.proto 文件解析 proto 文件 1. package 与 option 语句2. 消息类型定义 TrafficSpeedUserUserSt…

利用Django实现MySQL数据库的内容在网页的增删改写

利用Django实现MySQL数据库的内容在网页的增删改写 1.建立项目2.定义模型3.创建视图4.创建模板5.创建表单和配置url6.最后修改7.效果 1.建立项目 输入命令django-admin startproject aaa 新建项目&#xff0c;项目名称命名为aaa&#xff0c;打开aaa文件夹&#xff0c;命令提示…

vscode 安装教程

双击vscode 安装包 同意&#xff0c;下一步 可以使用默认安装路径&#xff0c;也可以优化为这个 全选 取消勾选&#xff0c;点完成 在桌面创建一个空文件夹&#xff0c;拖动到vscode图标上 点击这个图标创建文件&#xff0c;注意必须以.py 结尾&#xff01;&#xff0…

第三十二篇:TCP协议粘包和滑动窗口,TCP系列七

上一篇《第三十一篇&#xff1a;TCP协议如何解决丢包的问题&#xff0c;TCP系列六》讲了TCP如何解决丢包问题&#xff0c;本文将为大家讲解TCP是如何提高传输效率&#xff0c;减少传输时延的原理。 1. TCP是如何提高传输效率&#xff0c;减少传输时延的 ① 粘包 如果传输的数…

下载数据集用于图像分类并自动分为训练集和测试集方法

一、背景 最近需要用Vision Transformer&#xff08;ViT&#xff09;完成图像分类任务&#xff0c;因此查到了WZMIAOMIAO的GitHub&#xff0c;里面有各种图像处理的方法。而图像处理的前期工作就是获取大量的数据集&#xff0c;用于训练模型参数&#xff0c;以准确识别或分类我…

国标GB28181视频平台EasyGBS国标GB28181软件实现无需插件的视频监控对讲和网页直播

在当今社会&#xff0c;视频监控已经成为公共安全、企业管理、智能城市建设等领域不可或缺的一部分。然而&#xff0c;由于不同厂家和平台之间的兼容性问题&#xff0c;视频监控系统的联网和整合面临巨大挑战。为了解决这个问题&#xff0c;国家制定了《公共安全视频监控联网系…

LabVIEW非接触式模态参数识别系统开发

基于LabVIEW的模态参数识别系统采用非接触式声学方法&#xff0c;结合LabVIEW软件和高精度硬件&#xff0c;实现机械结构模态参数的快速准确识别。降低了模态分析技术门槛&#xff0c;提高测试效率和准确性。 项目背景与意义: 传统的模态分析方法&#xff0c;如锤击法&#x…

一个简单的图像分类项目(六)编写脚本:初步训练

训练的脚本 &#xff0c;用于训练和测试。lib.train.py: import timefrom load_imags import train_loader, train_num from nets import *def main():# 定义网络print(Please choose a network:)print(1. ResNet18)print(2. VGG)# 选择网络while True:net_choose input()if…

【C++】How the C++ Compiler Works

Firstly it needs to pre-process our code which means that any pre-processor statements get evaluated and once our code has been pre-processed we move on to more or less tokenizing(记号化) and parsing(解析) and basically sorting out(整理) this English C lan…

第2次CCF CSP认证真题解

1、相邻数对 题目链接&#xff1a;https://sim.csp.thusaac.com/contest/2/problem/0 本题和第1次认证的第1题“相反数”差不多&#xff0c;都是考察循环遍历比较和计数。 100分代码&#xff1a; #include <iostream> using namespace std; int main(int argc, char …

一款强大的开源OCR工具,支持90+语言识别

大家好&#xff0c;今天给大家分享一款功能强大的开源光学字符识别&#xff08;OCR&#xff09;工具Surya OCR&#xff0c;它基于先进的深度学习技术&#xff0c;提供了高效的字符识别能力&#xff0c;并支持多种语言的文本检测与识别。 项目介绍 核心功能 1.多语言支持 Sur…

破局:DLinear

1. Introduction (1) time series forecasting (TSF)&#xff1b; (2) 回顾 “ Transformer (Vaswani et al. 2017) ” 的各领域优秀表现&#xff1a; (3) IMS vs. DMS : → Consequently, IMS forecasting is preferable when there is a highly-accurate single-step fore…

量化交易打怪升级全攻略

上钟&#xff01; 继续分享量化干货~ 这次要唠的是Stat Arb的新作《Quant Roadmap》(中译名《量化交易路线图》)&#xff0c;为了方便&#xff0c;下文就称呼作者为“老S”&#xff0c;根据公开资料显示&#xff0c;他可是正儿八经的的量化研究员出身&#xff0c;在漂亮国头部对…

【electron8】electron实现“图片”的另存为

注&#xff1a;该列出的代码&#xff0c;都在文章内示例出 1. 另存为按钮事件&#xff1a; const saveAsHandler async () > {const { path, sessionId } recordInfoif(typeof message ! string) return;// 因为我的图片是加密的&#xff0c;所以我需要根据接口返回的路…

全国智能手机使用数据集-dta格式(包含2015、2017、2019三个版本)

数据简介&#xff1a;为推动经济社会高质量发展&#xff0c;缓解经济下行压力&#xff0c;中国加大推动5G基建、大数据中心等科技领域基础设施的建设和完善。数字技术深入各行各业&#xff0c;催生了新业态、新模式、新机会和新就业形式。智能手机作为劳动者使用数字技术的重要…