当前位置: 首页 > news >正文

centos(或openEuler系统)安装clickhouse集群

192.168.9.60、192.168.9.63、192.168.9.64三台centos(或openEuler系统)安装clickhouse集群(数据分散,不是1主2备)

一、安装clickhouse集群

以下操作在每台机器上一摸一样的执行:

关闭防火墙:
防火墙状态:service firewalld status
关闭防火墙:systemctl stop firewalld && systemctl disable firewalld

下载离线安装包

https://packages.clickhouse.com/rpm/stable/?directoryListingLimit=5000&cursor=1-JTdCJTIydiUyMiUzQTElMkMlMjJzdGFydEFmdGVyJTIyJTNBJTIycnBtJTJGc3RhYmxlJTJGY2xpY2tob3VzZS1jb21tb24tc3RhdGljLTIzLjMuMTEuNS54ODZfNjQucnBtJTIyJTJDJTIydXVpZCUyMiUzQSUyMjdlNzVjM2UwNmI2ZDAxN2Q5YzA5ZmMwYTVkZWMxNzk1JTIyJTdE


安装:
sudo yum localinstall -y /usr/clickhouse/clickhouse-common-static-24.2.3.70.x86_64.rpm /usr/clickhouse/clickhouse-server-24.2.3.70.x86_64.rpm /usr/clickhouse/clickhouse-client-24.2.3.70.x86_64.rpm
验证:
clickhouse-server --version
clickhouse-client --version

修改配置文件(3台一摸一样):
vi /etc/clickhouse-server/config.xml
修改部分:

<remote_servers><my_cluster><shard><replica><host>192.168.9.60</host><port>9000</port></replica></shard><shard><replica><host>192.168.9.63</host><port>9000</port></replica></shard><shard><replica><host>192.168.9.64</host><port>9000</port></replica></shard></my_cluster>
</remote_servers>

修改部分:
<!-- 允许监听所有网络接口 -->
<listen_host>::</listen_host>

增加用户:
修改 /etc/clickhouse-server/users.xml
<users></users>中增加:

        <root><password>Sn@123456</password><!-- 在这里填写明文密码 --><networks><ip>::/0</ip></networks></root>


    

重启:
sudo systemctl start clickhouse-server
sudo systemctl enable clickhouse-server

sudo systemctl status clickhouse-server


查看端口9000和8123是否开放:
sudo ss -nlpt

连接验证(比如在62连接60或63):
clickhouse-client --host 192.168.9.60 --port 9000 --user root --password 'Sn@123456'
clickhouse-client --host 192.168.9.63 --port 9000 --user root --password 'Sn@123456'


二、安装zookeeper集群


ZooKeeper 依赖于 Java:
sudo yum install -y java-1.8.0-openjdk

下载和解压 ZooKeeper
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz
sudo mv apache-zookeeper-3.6.3-bin /opt/zookeeper

创建一个名为 zoo.cfg 的配置文件(3台机器配置一摸一样):
sudo mkdir -p /opt/zookeeper/data
sudo vi /opt/zookeeper/conf/zoo.cfg
添加以下内容:

tickTime=2000
dataDir=/opt/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.9.60:2888:3888
server.2=192.168.9.63:2888:3888
server.3=192.168.9.64:2888:3888

重点:在每个 ZooKeeper 节点上,创建一个 myid 文件并添加相应的 ID(1、2 或 3):
例如,在 192.168.9.60 节点上:
echo "1" > /opt/zookeeper/data/myid

在 192.168.9.63 节点上:
echo "2" > /opt/zookeeper/data/myid

在 192.168.9.64 节点上:
echo "3" > /opt/zookeeper/data/myid

分别启动各自的zookeeper,建议从后往前启动
/opt/zookeeper/bin/zkServer.sh start

配置clickhouse的zookeeper:
每台修改/etc/clickhouse-server/config.xml 文件,添加以下内容(添加位置可搜索zookeeper):

<zookeeper><node><host>192.168.9.60</host><port>2181</port></node><node><host>192.168.9.63</host><port>2181</port></node><node><host>192.168.9.64</host><port>2181</port></node>
</zookeeper>

重启clickhouse
sudo systemctl restart clickhouse-server

验证:
/opt/zookeeper/bin/zkServer.sh status
查看端口2181是否开放:
sudo ss -nlpt
查看启动日志:
/opt/zookeeper/logs/zookeeper-root-server-master-01.out
(启动失败,可能是myid没建好,重建,重启每个机器)
测试连接:
/opt/zookeeper/bin/zkCli.sh -server 192.168.9.60:2181


dbveaver连接每个库,分别执行:

CREATE DATABASE res;-- res.rm_metric_data_history definition
CREATE TABLE res.rm_metric_data_history
(`resid` String,`respara` String,`item_code` String,`value` String,`coltime` DateTime,`gentime` DateTime DEFAULT now(),`company_code` String
)
ENGINE = MergeTree
ORDER BY coltime
TTL coltime + toIntervalDay(180)
SETTINGS index_granularity = 8192
COMMENT '性能历史表';INSERT INTO res.rm_metric_data_history
(resid, respara, item_code, value, coltime, gentime, company_code)
VALUES('9a82222a12d54c2a8c775147200d07b9', '-1', 'kafka.topic.net.bytes_in.rate', '1471.964798', '2024-07-12 18:13:00', '2024-07-12 18:11:50', '');
INSERT INTO res.rm_metric_data_history
(resid, respara, item_code, value, coltime, gentime, company_code)
VALUES('9a82222a12d54c2a8c775147200d07b9', '-1', 'kafka.topic.net.bytes_out.rate', '2943.929595', '2024-07-12 18:14:00', '2024-07-12 18:11:50', '');

在某机器执行创建分布式表:

CREATE TABLE res.rm_metric_data_history_distributed ON CLUSTER my_cluster
AS res.rm_metric_data_history
ENGINE = Distributed(my_cluster, res, rm_metric_data_history, rand());


仅仅在1个机器执行了,但是另外2个机器也有了这个表了。因为你使用了 ON CLUSTER 语句在 ClickHouse 中创建表。这意味着 ClickHouse 会自动在集群中的所有节点上创建该表。ON CLUSTER 语句会将 DDL 操作(如创建表、修改表、删除表等)广播到集群中所有的节点,因此你只需在一个节点上执行 DDL 操作,就会在整个集群中生效。

select * from res.rm_metric_data_history_distributed;
在63查这个表数据,能查到3个库的所有rm_metric_data_history表数据。


插入数据同理:
INSERT INTO res.rm_metric_data_history_distributed
(resid, respara, item_code, value, coltime, gentime, company_code)
VALUES('9a82222a12d54c2a8c775147200d07b9', '-1', 'mysql.performance.com_selecte', '1', '2024-07-14 18:14:00', '2024-07-13 18:14:00', 'zhejiang');
在某台机器执行插入,数据会根据主键coltime分散到3台机器的res.rm_metric_data_history表里。


备注(clickhouse集群内机器关系):
这种配置是啥意思

<remote_servers><my_cluster><shard><replica><host>server1</host><port>9000</port></replica><replica><host>server2</host><port>9000</port></replica></shard><shard><replica><host>server3</host><port>9000</port></replica></shard></my_cluster>
</remote_servers>


Shard:是数据的水平分片,每个 shard 存储数据的一个子集。
Replica:是数据的副本,每个 shard 可以有多个副本,副本之间的数据是相同的,用于高可用性和负载均衡。
在你的配置中,将 server1 和 server2 放在同一个 shard 里,而 server3 单独放在一个 shard,意味着:

Shard 1 包含 server1 和 server2,它们是彼此的副本,存储相同的数据。
Shard 2 包含 server3,它独立存储数据。
理解这种配置的原因
高可用性:通过将多个副本放在一个 shard 里,可以确保即使一个副本失败,其他副本依然可用。
负载均衡:多个副本可以分担读请求的负载,提高查询性能。
常见的配置模式
每个 Shard 多个 Replica:

适用于需要高可用性和负载均衡的场景。
例如:

<remote_servers><my_cluster><shard><replica><host>server1</host><port>9000</port></replica><replica><host>server2</host><port>9000</port></replica></shard><shard><replica><host>server3</host><port>9000</port></replica><replica><host>server4</host><port>9000</port></replica></shard></my_cluster>
</remote_servers>


每个 Shard 一个 Replica:

适用于数据分布要求明确,不需要副本的场景。
例如:

<remote_servers><my_cluster><shard><replica><host>server1</host><port>9000</port></replica></shard><shard><replica><host>server2</host><port>9000</port></replica></shard><shard><replica><host>server3</host><port>9000</port></replica></shard></my_cluster>
</remote_servers>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MySQL 关键字 IN 与 EXISTS 的使用与区别
  • 前端书籍翻页效果
  • 【proteus经典实战】定时器控制交通灯指示灯
  • Eureka: 微服务架构中的服务发现与注册实践
  • Python 潮流周刊#61:PyPI 管理员密钥泄露事件(摘要)
  • 【面试题】手撕缓存LRU
  • 开放开源开先河(三)
  • python需要掌握那些语法
  • 【Mysql关于读已提交和可重复读(Read Committed)隔离级别下解决幻读的方案】
  • python--实验15 数据分析与可视化
  • Python爬虫——1爬虫基础(一步一步慢慢来)
  • 【golang-ent】go-zero框架 整合 ent orm框架 | 解决left join未关联报错的问题
  • window11 部署llama.cpp并运行Qwen2-0.5B-Instruct-GGUF
  • python实现插入排序、快速排序
  • 陪玩系统小程序模式APP小程序H5系统搭建开发
  • dva中组件的懒加载
  • echarts的各种常用效果展示
  • Gradle 5.0 正式版发布
  • happypack两次报错的问题
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • iOS编译提示和导航提示
  • JavaScript创建对象的四种方式
  • js正则,这点儿就够用了
  • Python实现BT种子转化为磁力链接【实战】
  • uva 10370 Above Average
  • vue 配置sass、scss全局变量
  • win10下安装mysql5.7
  • 百度地图API标注+时间轴组件
  • - 概述 - 《设计模式(极简c++版)》
  • 开发基于以太坊智能合约的DApp
  • 如何设计一个比特币钱包服务
  • 我与Jetbrains的这些年
  • 硬币翻转问题,区间操作
  • 自定义函数
  • ‌内网穿透技术‌总结
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #pragma 指令
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (19)夹钳(用于送货)
  • (PADS学习)第二章:原理图绘制 第一部分
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (四)stm32之通信协议
  • (一)SvelteKit教程:hello world
  • (转载)hibernate缓存
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • ***检测工具之RKHunter AIDE
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .Net 4.0并行库实用性演练
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .NET MVC第三章、三种传值方式
  • .Net Winform开发笔记(一)