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>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebGL-编译报错,如何定位sendfile报错位置

1&#xff09;WebGL-编译报错&#xff0c;如何定位sendfile报错位置 2&#xff09;设置DepthBufferBits和设置DepthStencilFormat的区别 3&#xff09;Unity打包exe后&#xff0c;游戏内拉不起Steam的内购 4&#xff09;使用了Play Asset Delivery提交版本被Google报错 这是第3…

【Qt+opencv】计时函数与图像变换

文章目录 前言计算时间函数图像变换旋转镜像缩放 总结 前言 在图像处理和计算机视觉的应用中&#xff0c;我们经常需要对图像进行各种变换&#xff0c;如旋转、缩放、剪切等。同时&#xff0c;为了评估算法的性能&#xff0c;我们也需要对代码的执行时间进行精确的测量。OpenC…

前端组件化技术实践:Vue自定义顶部导航栏组件的探索

摘要 随着前端技术的飞速发展&#xff0c;组件化开发已成为提高开发效率、降低维护成本的关键手段。本文将以Vue自定义顶部导航栏组件为例&#xff0c;深入探讨前端组件化开发的实践过程、优势以及面临的挑战&#xff0c;旨在为广大前端开发者提供有价值的参考和启示。 一、引…

R语言画散点图-饼图-折线图-柱状图-箱线图-直方图-曲线图-热力图-雷达图

R语言画散点图-饼图-折线图-柱状图-箱线图-直方图-曲线图-热力图-雷达图 散点图示例解析效果 饼图示例解析效果 折线图示例解析效果 柱状图示例解析效果 箱线图示例解析效果 直方图示例解析效果 曲线图使用 curve() 函数示例效果 使用 plot() 函数示例效果 使用 ggplot2 包绘制…

super和this的作用与区别(java)

目录 &#xff08;一&#xff09;super关键字 &#xff08;1&#xff09;super的作用 &#xff08;2&#xff09;super的用法 2.1&#xff1a;super调用父类成员变量 2.2super调用父类成员方法 &#xff08;3&#xff09;super&#xff08;&#xff09;的使用 (4)super注意…

NAS新品“翻车”后,绿联科技要上市了

在消费电子市场回暖的东风中&#xff0c;又一消费电子知名企业登陆A股。 近日&#xff0c;深圳市绿联科技股份有限公司&#xff08;下称“绿联科技”&#xff09;开启申购&#xff0c;将在创业板上市。本次上市&#xff0c;绿联科技的发行价为21.21元/股&#xff0c;发行数量为…

【.NET全栈】ASP.NET开发Web应用——ADO.NET数据访问技术

文章目录 前言一、ADO.NET基础1、ADO.NET架构2、ADO.NET数据提供者 二、连接数据库1、SqlConnection数据库连接类2、使用SqlConnectionStringBuilder连接字符串3、关闭和释放连接4、在web.config配置文件中保存连接字符串5、连接池技术 三、与数据库交互1、使用SqlCommand操作数…

Node.js 路由

Node.js 路由 介绍 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它允许开发者使用 JavaScript 编写服务器端代码。Node.js 的一个核心特性是其事件驱动和非阻塞 I/O 模型,这使得它非常适合处理高并发和 I/O 密集型的应用程序。在 Node.js 中,路由是指确定应…

揭秘!Shopee/Lazada自养号测评高效法,三大策略助力商家快速出单

在东南亚电商的版图中&#xff0c;Lazada凭借其庞大的市场覆盖网络及卓越的服务品质&#xff0c;成功吸引了无数商家与消费者的瞩目。然而&#xff0c;对于渴望在Lazada平台上大展宏图的商家而言&#xff0c;出单的难易程度成为了一个值得深入探讨的议题。 一、Lazada出单的挑战…

GNU/Linux - U-BOOT的GPIO command

在嵌入式Linux开发中&#xff0c;先运行的是u-boot&#xff0c;然后再加载Linux内核。 启动时如果设置了u-boot等待时间&#xff0c;在等待时间内&#xff0c;按任意键就会进入u-boot命令行环境。 在u-boot命令行环境下&#xff0c;可以使用gpio命令来操作GPIO。 Synopsis gpi…

MPNN消息传递神经网络

MPNN&#xff08;Message Passing Neural Networks&#xff0c;消息传递神经网络&#xff09;是一种图神经网络&#xff08;GNN&#xff09;的架构&#xff0c;用于处理图结构数据。MPNNs 是一种通用的框架&#xff0c;许多其他图神经网络&#xff08;如GCN, GAT&#xff09;都…

泰迪科技2024年高校(本科/职业院校)大数据实验室建设及大数据实训平台整体解决方案

高校大数据应用人才培养目标 大数据专业是面向信息技术行业&#xff0c;培养德智体美劳全面发展的大数据领域的高素质管理型专门人才&#xff0c;毕业生具备扎实的管理学、经济学、自然科学、技术应用、人文社科的基本理论, 系统深入的大数据管理专业知识和实践能力&#xff0c…

JavaEE (1)

web开发概述 所谓web开发,指的是从网页中向后端程序发送请求,与后端程序进行 交互. 流程图如下 Web服务器是指驻留于因特网上某种类型计算机的程序. 可以向浏览器等Web客户端提供文档&#xff0c;也可以放置网站文件&#xff0c;让全世界浏览&#xff1b; 它是一个容器&…

FPGA-计数器

前言 之前一直说整理点FPGA控制器应用的内容&#xff0c;今天就从计数器这个在时序逻辑中比较重要的内容开始总结一下&#xff0c;主要通过还是通过让一个LED闪烁这个简单例子来理解。 寄存器 了解计数器之前先来认识一下寄存器。寄存器是时序逻辑设计的基础。时序逻辑能够避…

TFHE库,fftw和googletest库安装

点个关注吧&#xff01;本文主要关注于TFHE的安装与常见的问题 1.TFHE的git链接&#xff1a; https://github.com/tfhe/tfhe git clone --recurse-submodules --branchmaster https://github.com/tfhe/tfhe.git 2.安装 mkdir build cd build cmake ../src -DENABLE_TESTSon -D…

概率论中的卷积公式

目录 简介 卷积公式的推导与应用 实际例子 卷积公式在多维情况下的推导和应用是什么&#xff1f; 多维卷积的推导 多维卷积的应用 延伸拓展 如何使用卷积公式解决实际问题&#xff0c;例如信号处理中的噪声消除&#xff1f; 在统计学中&#xff0c;卷积公式是如何应用于…

细说MCU用DMA控制ADC采样和串口传送的实现方法

目录 一、建立工程 1.相同的配置 2.配置ADC 3.配置DMA 二、代码修改 1.定义存储ADC采样结果的数组 2.启动ADC与定时器 3.编写主程序代码 4.重定义回调函数 5.查看结果 三、修改DMA模式 1. 修改DMA模式为Circular 2.查看结果 采用DMA(Direct Memory Access&#xf…

WebRTC QOS方法十三.1(TimestampExtrapolator接收时间预估)

一、背景介绍 虽然我们可通过时间戳的差值和采样率计算出发送端视频帧的发送节奏&#xff0c;但是由于网络延迟、抖动、丢包&#xff0c;仅知道视频发送端的发送节奏是明显不够的。我们还需要评估出视频接收端的视频帧的接收节奏&#xff0c;然后进行适当平滑&#xff0c;保证…

卷积神经网络【CNN】--池化层的原理详细解读

池化层&#xff08;Pooling Layer&#xff09;是卷积神经网络&#xff08;CNN&#xff09;中的一个关键组件&#xff0c;主要用于减少特征图&#xff08;feature maps&#xff09;的维度&#xff0c;同时保留重要的特征信息。 一、池化层的含义 池化层在卷积神经网络中扮演着降…

JavaScript与DOM的奇妙探险:从入门到精通的实战笔记

文章目录 JavaScript基本说明特点两种使用方式在script中写使用script标签引入JS文件 数据类型介绍特殊值 运算符算数运算符赋值运算符逻辑运算符&#xff1a;![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/bbf5c150699845af837d3c45c926e941.png)条件运算符 数组的…