Clickhouse笔记(二) 集群搭建
0.集群规划
操作系统使用ubuntu2204server,8C8G100G。
节点 | 分片 | 部署 |
---|---|---|
192.168.50.5 | 分片1副本1 | clickhouse-server/clickhouse-client/keeper |
192.168.50.6 | 分片1副本2 | clickhouse-server/clickhouse-client/keeper |
192.168.60.7 | 分片2副本1 | clickhouse-server/clickhouse-client/keeper |
192.168.50.25 | 分片2副本2 | clickhouse-server/clickhouse-client |
四台主机都作为数据分片,每个数据分片有两个副本。keeper 部署到三个节点上,奇数节点用于实现 ClickHouse Keeper 中要求的票选数。
1.准备节点
- 准备操作系统 ubuntu 或centos,尽量和你生产环境的操作系统版本一致
- 统一时区,配置NTP(测试环境可以简略,只要节点的时区统一即可)
- 配置ssh免密登录(可选)
1.1 使用指定的版本
根据实际情况安装指定版本的clickhouse.使用命令curl https://clickhouse.com/ | sh
安装的clickhouse默认是最新版本的,但是有时我们需要安装指定的稳定版本,登录 https://packages.clickhouse.com/ 可以找到clickhouse为不同linux发行版本准备的各个版本的.
1.2 使用第三方版本
也可以使用Altinity的稳定版本 https://builds.altinity.cloud/
sudo apt update
sudo apt install -y curl gnupg2 apt-transport-https ca-certificates dialog
sudo sh -c 'mkdir -p /usr/share/keyrings && curl -s https://builds.altinity.cloud/apt-repo/pubkey.gpg | gpg --dearmor > /usr/share/keyrings/altinity-archive-keyring.gpg'
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/altinity-archive-keyring.gpg] https://builds.altinity.cloud/apt-repo stable main" > /etc/apt/sources.list.d/altinity.list'
sudo apt update
sudo apt install -y clickhouse-server clickhouse-client
v24.4.1.2088-stable
🖊 上面两种安装方式任选一种,在每台服务器上安装clickhouse。
安装完成后使用下面的命令启动clickhouse.
sudo -u alfiy clickhouse server
也可以以服务的方式启动
sudo service clickhouse-server start
2.配置集群
注意,ClickHouse 要求每个分片的每个副本必须配置在单独的实例上,也就是说在整个集群范围内,一共有多少个副本,就需要创建多少个 ClickHouse 实例。最佳实践是3分片2副本6实例。
2.0 修改hosts
如果在clickhouse的配置中,使用了域名配置而不是IP地址,除非你的域名真实存在,否则需要修改本机的hosts文件。由于我同时测试了使用域名和IP两种配置方式,所以在本例中需要同时修改四个节点的hosts文件。
打开/etc/hosts
文件,添加以下内容。
192.168.50.5 node1
192.168.50.6 node2
192.168.50.7 node3
192.168.50.25 node4
修改完成后,可以使用ping node1
命令查看hosts是否生效,如果生效就能够ping的通。
2.1修改node1的配置
在node2的/etc/clickhouse-server/config.xml
文件的标签中添加以下内容。
<!-- 添加以下条目以允许通过网络接口进行外部通信。 --><listen_host>0.0.0.0</listen_host><!-- 指定实例启用 ClickHouse Keeper。更新每台服务器的<server_id>设置,node1为1、node2为2、node3为3。--><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>warning</raft_logs_level></coordination_settings><raft_configuration><server><id>1</id><hostname>192.168.50.5</hostname><port>9234</port></server><server><id>2</id><hostname>192.168.50.6</hostname><port>9234</port></server><server><id>3</id><hostname>192.168.50.7</hostname><port>9234</port></server></raft_configuration></keeper_server><!-- 指定实例所使用的 ClickHouse Keeper,可以使用域名也可以使用IP地址 --><zookeeper><node><host>192.168.50.5</host><port>9181</port></node><node><host>192.168.50.6</host><port>9181</port></node><node><host>192.168.60.7</host><port>9181</port></node></zookeeper><remote_servers><!-- cluster_2S_2R 标签为集群名称,可以自定义但集群中的节点保持一致 --><cluster_2S_2R><shard><replica><host>192.168.50.5</host><port>9000</port><user>default</user><password>your_password</password></replica><replica><host>192.168.50.6</host><port>9000</port><user>default</user><password>your_password</password></replica></shard><shard><replica><host>192.168.50.7</host><port>9000</port><user>default</user><password>your_password</password></replica><replica><host>192.168.50.25</host><port>9000</port><user>default</user><password>your_password</password></replica></shard></cluster_2S_2R></remote_servers><macros><!-- shard标签为分片数,replica为副本数 --><shard>01</shard><replica>01</replica></macros>
🖊 <server_id>1</server_id> 对应node1 <server_id>2</server_id>对应node2<server_id>3</server_id>对应node3
2.2 修改node2的配置
在node2的/etc/clickhouse-server/config.xml
文件的标签中添加以下内容。
<!-- 添加以下条目以允许通过网络接口进行外部通信。 --><listen_host>0.0.0.0</listen_host><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>warning</raft_logs_level></coordination_settings><!-- 指定实例启用 ClickHouse Keeper。更新每台服务器的<server_id>设置,node1为1、node2为2、node3为3。--><raft_configuration><server><id>1</id><hostname>node1</hostname><port>9234</port></server><server><id>2</id><hostname>node2</hostname><port>9234</port></server><server><id>3</id><hostname>node3</hostname><port>9234</port></server></raft_configuration></keeper_server><!-- 指定实例所使用的 ClickHouse Keeper 可以使用IP也可以使用域名,或者在hosts文件中配置域名 --><zookeeper><node><host>node1</host><port>9181</port></node><node><host>node2</host><port>9181</port></node><node><host>node3</host><port>9181</port></node></zookeeper><remote_servers><cluster_2S_2R><shard><replica><host>node1</host><port>9000</port><user>default</user><password>your_password</password></replica><replica><host>node2</host><port>9000</port><user>default</user><password>your_password</password></replica></shard><shard><replica><host>node3</host><port>9000</port><user>default</user><password>your_password</password></replica><replica><host>node4</host><port>9000</port><user>default</user><password>your_password</password></replica></shard></cluster_2S_2R></remote_servers><macros><shard>01</shard><replica>02</replica></macros>
2.3 修改node3的配置
在node3的/etc/clickhouse-server/config.xml
文件的标签中添加以下内容。
<!-- 添加以下条目以允许通过网络接口进行外部通信。 --><listen_host>0.0.0.0</listen_host><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>warning</raft_logs_level></coordination_settings><!-- 指定实例启用 ClickHouse Keeper。更新每台服务器的<server_id>设置,node1为1、node2为2、node3为3。--><raft_configuration><server><id>1</id><hostname>node1</hostname><port>9234</port></server><server><id>2</id><hostname>node2</hostname><port>9234</port></server><server><id>3</id><hostname>node3</hostname><port>9234</port></server></raft_configuration></keeper_server><!-- 指定实例所使用的 ClickHouse Keeper 可以使用IP也可以使用域名,或者在hosts文件中配置域名 --><zookeeper><node><host>node1</host><port>9181</port></node><node><host>node2</host><port>9181</port></node><node><host>node3</host><port>9181</port></node></zookeeper><remote_servers><cluster_2S_2R><shard><replica><host>node1</host><port>9000</port><user>default</user><password>your_password</password></replica><replica><host>node2</host><port>9000</port><user>default</user><password>your_password</password></replica></shard><shard><replica><host>node3</host><port>9000</port><user>default</user><password>your_password</password></replica><replica><host>node4</host><port>9000</port><user>default</user><password>your_password</password></replica></shard></cluster_2S_2R></remote_servers><macros><shard>02</shard><replica>01</replica></macros>
从以上配置文件中可以看出,node1,node2,node3的区别只是<macros></macros>
标签中的区别。
2.4 修改node4的配置
在node4的/etc/clickhouse-server/config.xml
文件的标签中添加以下内容。
<!-- 添加以下条目以允许通过网络接口进行外部通信。 -->
<listen_host>0.0.0.0</listen_host><!-- 指定实例所使用的 ClickHouse Keeper -->
<zookeeper><node><host>node1</host><port>9181</port></node><node><host>node2</host><port>9181</port></node><node><host>node3</host><port>9181</port></node>
</zookeeper><remote_servers><cluster_2S_2R><shard><replica><host>node1</host><port>9000</port><user>default</user><password>your_password</password></replica><replica><host>node2</host><port>9000</port><user>default</user><password>your_password</password></replica></shard><shard><replica><host>node3</host><port>9000</port><user>default</user><password>your_password</password></replica><replica><host>node4</host><port>9000</port><user>default</user><password>your_password</password></replica></shard></cluster_2S_2R>
</remote_servers>
<macros><shard>02</shard><replica>02</replica>
</macros>
3.查看集群
集群启动后,可以使用clickhouse client登录客户端,使用以下命令查看集群的相关信息。
SHOW CLUSTERS;
SELECT *
FROM system.zookeeper
WHERE path IN ('/', '/clickhouse');
这个查询时间有点长
SELECTcluster,shard_num,replica_num,host_name,is_local,user,database_shard_name,database_replica_name
FROM system.clusters;
相关文章:
Clickhouse笔记(二) 集群搭建
0.集群规划 操作系统使用ubuntu2204server,8C8G100G。 节点分片部署192.168.50.5分片1副本1clickhouse-server/clickhouse-client/keeper192.168.50.6分片1副本2clickhouse-server/clickhouse-client/keeper192.168.60.7分片2副本1clickhouse-server/clickhouse-c…...
华为云购买弹性云服务器(教程)
配置弹性云服务器 基础配置 实例 操作系统...
Python异常检测- 单类支持向量机(One-Class SVM)
系列文章目录 Python异常检测- Isolation Forest(孤立森林) python异常检测 - 随机离群选择Stochastic Outlier Selection (SOS) python异常检测-局部异常因子(LOF)算法 Python异常检测- DBSCAN 文章目录 系列文章目录前言一、On…...
基于SpringBoot+Vue+uniapp微信小程序的婚庆摄影小程序的详细设计和实现(源码+lw+部署文档+讲解等)
项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…...
NGAC访问控制系列三:低代码产品NGAC运用与算法运用
目录 一、基于NGAC的低代码模型权限管理方案 二、多策略访问控制系统限制内部访问的线性时间算法 1、概述 2、权限控制图遍历算法 一、基于NGAC的低代码模型权限管理方案 NGAC在低代码平台的权限决策模型:功能权限数据权限 案例:对于七巧低代码开发平台&…...
Unity3D 面试题收录
Unity3D 客户端面试题收录(持续更新~) 面试题收录 本文收录一些对于 Unity3D 客户端可能遇到的面试题(持续更新~),答案仅出于个人理解,如有偏差,希望指正。 Unity3D MonoBehaviour 生命周期…...
Jrebel热部署不生效解决
打开setting找到build底下的complier勾选 build project automatically 设置自动构建项目 打开setting找到Advanced Setting勾选Complier中的第一项 Jrebel panel中勾选需要热部署的项目模块 项目配置信息:Edit Configuration中进行编辑,配置如下图…...
软件测试学习笔记丨Selenium键盘鼠标事件ActionChains
本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/22515 本文为霍格沃兹测试开发学社的学习经历分享,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~ 说明:本篇博客基于sel…...
CI/CD(持续集成与持续交付)流水线
集成 Jenkins、GitLab Webhook、Nexus 和 RabbitMQ 可以形成一个全面的 CI/CD(持续集成与持续交付)流水线,结合消息队列可以创建事件驱动的工作流。以下是配置这四个工具以实现一个基本的 CI/CD 流程的详细步骤。 前置条件 Jenkins、GitLab、…...
分布式光伏发电有什么优劣势
分布式光伏发电是指在离电力消费地点较近的地方,通过安装光伏发电系统来发电。这种系统通常用于屋顶、地面或其他建筑物上,相比于集中式光伏发电系统,它有一些独特的优势和劣势: 优势: 地理适应性: 分布式…...
Spring Boot框架中的IO
1. 文件资源的访问与管理 在 Spring Boot 中,资源文件的访问与管理是常见的操作需求,比如加载配置文件、读取静态文件或从外部文件系统读取文件。Spring 提供了多种方式来处理资源文件访问,包括通过 ResourceLoader、Value 注解以及 Applica…...
DBeaver连接Hive教程
hive shell:通过hive shell来操作hive,但是至多只能存在一个hive shell,启动第二个会被阻塞,也就是说hive shell不支持并发操作。 基于JDBC等协议:启动hiveserver2,通过jdbc协议可以访问hive,hi…...
Vue-Router源码实现详解
1.Hash模式 hash就是url中#后面的部分hash改变时,页面不会从新加载,会触发hashchange事件,去监听hash改变,而且也会被记录到浏览器历史记录中vue-router的hash模式,主要是通过hashchange事件,根据hash值找…...
程序员节日的日期是10月24日程序员日
程序员节日的日期是10月24日。 这一天被称为中国程序员日或1024程序员节,由博客园、CSDN等自发组织设立,旨在纪念程序员对科技世界的贡献。 程序员节日的由来和意义 1024程序员节的由来可以追溯到2010年,最初由网友提出设立一个…...
联邦学习中的数据异构性
在联邦学习(Federated Learning, FL)领域中, 异构数据(Heterogeneous Data) 是指不同客户端所持有的本地数据在特征分布、类别分布、数量等方面存在差异的数据。这种数据的异质性是联邦学习面临的一大挑战,…...
Python小程序 - 替换文件内容
1. 写入文件c:\a.txt 1)共写入10行 2)每行内容 0123456789 # 1 ls 0123456789 ln 10 with open("c:/a.txt", w,encodingUTF-8) as f:for i in range(ln):f.write(ls\n)######################################### 2 ln 10…...
k8s备份恢复(velero)
velero简介 velero官网: https://velero.io/ velero-github: https://github.com/vmware-tanzu/velero velero的特性 备份可以按集群资源的子集,按命名空间、资源类型标签选择器进行过滤,从而为备份和恢复的内容提供高度的灵活…...
LED户外屏:面对复杂环境的七大挑战
户外LED显示屏作为现代城市广告和信息传播的重要媒介,其应用范围越来越广泛。然而,与室内环境相比,户外环境的复杂多变对LED显示屏提出了更高的要求。本文将探讨户外LED显示屏在设计和应用过程中必须考虑的七个关键问题。 1. 高分辨率 户外LE…...
LabVIEW自动化流动返混实验系统
随着工业自动化的不断发展,连续流动反应器在化工、医药等领域中的应用日益广泛。传统的流动返混实验操作复杂,数据记录和处理不便,基于LabVIEW的全自动流动返混实验系统能自动测定多釜反应器、单釜反应器和管式反应器的停留时间分布ÿ…...
【性能优化】安卓性能优化之CPU优化
【性能优化】安卓性能优化之CPU优化 CPU优化及常用工具原理与文章参考常用ADB常用原理、监控手段原理监控手段多线程并发解决耗时UI相关 常见场景排查CPU占用过高常用系统/开源分析工具AndroidStudio ProfilerSystraceBtracePerfettoTraceView和 Profile ANR相关ANR原理及常见场…...
springboot二手图书交易系统-计算机设计毕业源码88413
目 录 摘要 1 绪论 1.1研究背景 1.2研究意义 1.3论文结构与章节安排 2 二手图书交易系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 二手…...
解决ElasticSearch启动成功却无法在浏览器访问问题
目录 前言: 问题复现 : 解决问题: 1、修改sysctl.conf文件 2、在sysctl.conf文件增加这段东西 3、 然后保存退出,输入以下命令使其生效 结语: 前言: 这篇文章是小白我今天突然启动es,发现e…...
稀土有色包芯线良好的导电性
稀土有色包芯线是一种结合了稀土元素和有色金属(如铜、铝、镁等)的特殊线材。以下是对稀土有色包芯线的详细介绍: 一、组成与结构 芯线:由稀土元素和有色金属组成的合金制成。稀土元素(如镧、铈、镁等)的添加量在一定范围内,以确保合金性能的…...
SIP 业务举例之 Call Forwarding Unconditional(无条件呼转)
目录 1. Call Forwarding Unconditional 简介 2. RFC5359 的 Call Forwarding Unconditional 信令流程 PS:Dialog 建立条件 Dialog 会话完全建立 3. Call Forwarding Unconditional 过程总结 博主wx:yuanlai45_csdn 博主qq:2777137742 想要 深入学习 5GC IMS 等通信知识…...
基于stm32的esp8266的WIFI控制风扇实验
实验案例WIFI控制风扇 项目需求 电脑通过esp8266模块远程遥控风扇。 项目框图 风扇模块封装 #include "sys.h" #include "fan.h"void fan_init(void) {GPIO_InitTypeDef gpio_initstruct;//打开时钟…...
java中的ScheduledExecutorService介绍和使用案例
ScheduledExecutorService 是 Java 并发包 java.util.concurrent 中的一个接口,它提供了一种机制,允许我们安排一个任务在给定的延迟后运行,或者定期地执行。 主要特点 单次调度:可以安排任务在一定的延迟后执行一次。周期性调度…...
4天涨粉14万!这个AI小众赛道粉丝涨疯了吧?保姆级教程免费教会你!
测一下你的搞钱灵敏度有多高,看下面两张截图,有没有发现什么异常值? 发现了吧? 第一张是10月17号截的,第二张是21号,4天时间粉丝从2.8万飙到16.6万,涨粉14万! 这个号我几天之前就发…...
RK3588 技术分享 | 在Android系统中使用NPU实现Yolov5分类检测
随着人工智能和大数据时代的到来,传统嵌入式处理器中的CPU和GPU逐渐无法满足日益增长的深度学习需求。为了应对这一挑战,在一些高端处理器中,NPU(神经网络处理单元)也被集成到了处理器里。NPU的出现不仅减轻了CPU和GPU…...
itext 转换word文档转pdf
itext 转换word文档转pdf <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version><scope>compile</scope></dependency> <dependency><groupId>org.a…...
WSL-默认root登录
WSL-默认root登录 使用管理员,打开powershell PS C:\WINDOWS\system32> wsl -l 适用于 Linux 的 Windows 子系统分发版: Ubuntu-22.04 (默认) PS C:\WINDOWS\system32> ubuntu2204.exe config --default-user root PS C:\WINDOWS\system32>修改之后&…...
个人域名备过案了做电影网站会查吗/如何推广网店
第一步:打开cmd命令窗口 第二步:输入 netstat -ano命令 第三步:看到上图,找到相对应的pid 在命令窗口使用 tasklist|findstr "1008" 定位对应的程序 转载于:https://www.cnblogs.com/fogwang/p/11137195.html...
网站建设销售年终总结/电商网站设计方案
// 1. 不需要参数,返回值为 5() -> 5// 2. 接收一个参数(数字类型),返回其2倍的值x -> 2 * x// 3. 接受2个参数(数字),并返回他们的差值(x, y) -> x – y// 4. 接收2个int型整数,返回他们的和(int x, int y) -> x y// 5. 接受一个 string 对象,并在控制台打印,不返…...
雄安移动网上营业厅/昆明优化网站公司
keys * 查看当前库所有的keyexists key 判断某个key是否存在move key db 当前库就没有了,被移除了expire key 秒钟:为给定的key设置过期时间ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期type key 查看你的key是什么…...
网站首页的动态视频怎么做的/在线seo关键词排名优化
链接: link...
医疗行业企业网站建设/私域流量运营管理
内置函数: 函数分类: 内置函数查看: show funcitons; 查看函数描述: DESC FUNCTION concat; 具体见: https://cwiki.apache.org/confluence/display/Hive/LanguageManualUDF 1, 简单函数( 函数的计算粒度为单条记录) 关系运算 数学运算 逻辑运算 数值计算 类型转换 日期函数…...
网站建设专家排名/可以免费发广告的网站
利用ctrlEnd可以快速移动到最后当前列最后一行,无论中间是否有空行。 利用ctrlshiftend可以快速选中最后一列的最后一行,无论中间是否有空格。 利用ctrlg,输入定位区域,也可以实现任何一个区域的选中,比如输入a2:a20000,可以快速选…...