clickhouse优化使用clickhouse-keeper替代zookeeper

news2025/1/12 22:57:51

ClickHouse Keeper 是 ZooKeeper 的替代品,与 ZooKeeper 不同,ClickHouse Keeper 是用 C++ 编写的,并使用 RAFT 算法实现,该算法允许对读写具有线性化能力。
clikhouse-keeper目的在于替换zookeeper,使用clickhouse后,服务器性能,提升了一大截,只需要在配置zookeeper的地方,改成clickhouse-keeper即可。
ClickHouse keeper相对zookeeper来说性能更好,维护更方便。
功能设计
在这里插入图片描述

使用clickhouse-keeper代替 zookeeper的步骤:

1: 部署clickhouse-keeper

部署clickhouse-keeper同部署clickhouse

1.1- 设置通信地址,以便对外通信

a. 检查端口是否被占用

假设keeper的端口是9181,与server通信接口为9444

netstat -anp | grep 9181 
netstat -anp | grep 9444

b. 设置 clickhouse-keeper的地址,每个节点内容一致

<?xml version="1.0"?>
<yandex>
    <!-- 监听IP -->
    <listen_host>0.0.0.0</listen_host>
    <keeper_server>
        <tcp_port>9181</tcp_port>
        <server_id>1</server_id>
        <log_storage_path>/var/lib/clickhouse/keeper/log</log_storage_path>
        <snapshot_storage_path>/var/lib/clickhouse/keeper/snapshots</snapshot_storage_path>

        <coordination_settings>
            <operation_timeout_ms>30000</operation_timeout_ms>
            <session_timeout_ms>60000</session_timeout_ms>
            <raft_logs_level>error</raft_logs_level>
            <force_sync>false</force_sync>
        </coordination_settings>

        <raft_configuration>
            <server>
                <id>1</id>
                <hostname>node01</hostname>
                <port>9444</port>
            </server>
            
            <server>
                <id>2</id>
                <hostname>node02</hostname>
                <port>9444</port>
            </server>
            <server>
                <id>3</id>
                <hostname>node03</hostname>
                <port>9444</port>
            </server>
           
        </raft_configuration>
    </keeper_server>
</yandex>

c. 设置clickhouse-keeper的server_id 和clickhouse-server通信端口 9444

每个节点的server_id要确保唯一,不能和其他节点重复 , keeper_server中的server_id是要和配置raft协议集群时命名的一致。

例如:

在 clickhouse-node01上的配置, <server_id>1</server_id>

在clickhouse_node02上的配置, <server_id>2</server_id>

2:备份 clickhouse-server的配置文件和数据,以及zookeeper的元数据。(预防升级失败需要回滚)

b. zookeeper的数据: 在zoo.cfg,数据目录。

dataDir=/data/zookeeper/zkdata (存储snap数据)
dataLogDir=/data/zookeeper/zklog (存储 transation命令)

4: 迁移zk的元数据到 clickhouse-keeper

a- 停止所有的zk 节点。

​ 在所有的zk节点上 执行

zkServer.sh stop

b- 建议 启停zk的leader,以便强制 复制一份 一致性的快照。

​ 查找leader节点, 在所有的节点上执行

zkServer.sh stop

在leader节点上 启停zookeeper

zkServer.sh start
zkServer.sh stop

c- 运行 clickhouse-keeper-converter , 生成snapshot

clickhouse-keeper-converter --zookeeper-logs-dir /data/zookeeper/zklog/version-2 --zookeeper-snapshots-dir /data/zookeeper/zkdata/version-2 --output-dir /var/lib/clickhouse/keeper/snapshots
chown -R clickhouse:clickhouse /var/lib/clickhouse

同步数据

scp -r /var/lib/clickhouse/keeper root@clickhouse-keeper:/var/lib/clickhouse

e- 单独启动clickhouse-keeper

如果server和keeper是安装在同一个节点,这步可以省略

sudo -su clickhouse clickhouse-keeper --config  /etc/clickhouse-server/keeper.xml --daemon

测试连接

zkCli.sh -server localhost:9181

5- 重启 clickhouse

/usr/bin/clickhouse-server stop
/usr/bin/clickhouse-server start 

6- 验证是否clickhouse-keeper是否正常运行

 echo ruok | nc localhost 9181

期望看到:imok

7- 验证clickhouse是否正常运行

连接客户端,创建一张分布式表,查看数据是否能正常操作分布式表(CRUD)。

 select * from system.clusters;

8- 通过nginx接入clickhouse

upstream clickhouse{
    server node1:8123 weight=1;
    server node2:8123 weight=1;
    server node3:8123 weight=1;
}
server{
    listen 8123;
    location /{
    proxy_pass http://clickhouse;
    }
}

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

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

相关文章

【python】从Ensembl上,根据Array HumanMethylation450甲基化探针cg编号(比如cg13788592)获取位置

文章目录 1. 写在前面2. 手动查找和探索过程从UCSC查找从Ensembl查找 3. 代码实现 1. 写在前面 一篇专利 1 中提到多种癌种及对应的特异性CpG位点&#xff0c;想获取对应cg位点具体的位置或序列。专利中的一组CpG markers如下&#xff1a; 需求就是&#xff1a;将这些cg编号作…

Learning Enriched Features for Fast Image Restoration and Enhancement 论文阅读笔记

这是2022年TPAMI上发表的大名鼎鼎的MIRNetv2&#xff0c;是一个通用的图像修复和图像质量增强模型&#xff0c;核心是一个多尺度的网络 网络结构整体是残差的递归&#xff0c;不断把残差展开可以看到是一些残差块的堆叠。核心是多尺度的MRB。网络用的损失函数朴实无华&#x…

DuDuTalk:智能语音工牌如何赋能销售过程管理?

智能语音工牌是一种智能语音采集设备&#xff0c;配合ASR、NLP、语音分析、文本挖掘等AI技术&#xff0c;它可以帮助企业实现销售过程的监控、分析和改进。在这篇文章中&#xff0c;我们将探讨如何利用录音工牌实现销售过程管理&#xff0c;并介绍其重要性和应用。 1、什么是销…

3.9 JavaDoc生成文档

3.9 JavaDoc生成文档 javadoc命令是用来生成自己API文档的 javadoc是一种技术&#xff0c;他可以将我们的注释信息生成一个帮助文档 参数信息author 作者名version 版本号since 指明需要最早使用的JDK版本param 参数名return 返回值情况throws 异常抛出情况文档注释 /**回车…

接口测试-Jmeter响应数据结果保存到csv文件2种方式(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 日常接口测试&…

阿里巴巴最新总结 Spring Security Oauth2.0 认证授权全彩笔记

Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。由于它是 Spring 生态系统中的一员&#xff0c;因此它伴随着整个 Spring 生态系统不断修正、升级&#xff0c;在 Spring Boot 项目中加入 Spring Security 更是十分简单&a…

C语言进阶,第4节-自定义类型详解(结构体

一、 结构体 1. 结构的声明 //描述一个学生 struct Stu//结构体标签 {//成员变量char name[20];int age;char sex[5];char id[20]; }x; //x 为 struct Stu 类型的变量//匿名结构体类型 struct {int a;char c;float f; }a;struct {int a;char c;float f; }*pa;//省略了结构体…

集群基础1——集群概念、LVS负载均衡

文章目录 一、基本了解二、LVS负载均衡2.1 基本了解2.2 工作模式2.2.1 NAT模式2.2.2 DR模式2.2.3 LVS-TUN模式2.2.4 LVS-FULLNAT模式 三、调度器算法四、ipvsadm命令 一、基本了解 什么是集群&#xff1f; 多台服务器做同一件事情。 集群扩展方式&#xff1a; scale up&#xf…

OJ练习第136题——在二叉树中分配硬币

在二叉树中分配硬币 力扣链接&#xff1a;979. 在二叉树中分配硬币 题目描述 给定一个有 N 个结点的二叉树的根结点 root&#xff0c;树中的每个结点上都对应有 node.val 枚硬币&#xff0c;并且总共有 N 枚硬币。 在一次移动中&#xff0c;我们可以选择两个相邻的结点&…

java导出pdf(纯代码实现)

java导出pdf 在项目开发中&#xff0c;产品的需求越来越奇葩啦&#xff0c;开始文件下载都是下载为excel的&#xff0c;做着做着需求竟然变了&#xff0c;要求能导出pdf。导出pdf倒也不是特别大的问题关键就是麻烦。 导出pdf我知道的一共有3中方法&#xff1a; 方法一&#xff…

Linux系统ubuntu22.04安装最新版的gcc13.1.0编译器,支持c++20、23

Linux系统ubuntu22.04安装最新版的gcc13.1.0编译器&#xff0c;支持c20、23 本文全程实操&#xff0c;上机验证通过。 首先查看gcc版本&#xff0c;以确保系统内有gcc&#xff0c;如果没有需要安装sudo apt install gcc 去GUN官网查看最新的gcc版本Index of /gnu/gcc 下载最…

若依添加router-view,使用详细(若依后台管理系统添加router-view)

简介&#xff1a;大家都知道若依后台管理系统&#xff0c;它是一款基于SpringBoot&#xff0c;Spring Security&#xff0c;JWT&#xff0c;Vue & Element 的开发的企业级后台管理系统&#xff0c;可以用于管理企业网站、电子商务平台、移动应用等各种应用系统&#xff0c;…

Shell第四章——函数

命令序列按照格式写在一起 核心&#xff1a;财富使用的命令序列 使用函数可以避免代码重复&#xff0c;函数可以将大的工程分割成若干小的功能模块&#xff0c;提高代码的可读性 第一种写法 第二种写法 return&#xff1a;表示退出函数并返回一个退出值&#xff0c;用…

Android init 进程启动相关分析

目录 1.概述&#xff1a; 2.架构 2.1 Init进程如何被启动&#xff1f; 2.2Init进程启动后&#xff0c;做了哪些事&#xff1f; 3.kernel启动init进程 源码分析 3.1 kernel_init 3.2 do_basic_setup 4. Init 进程启动源码分析 4.1 Init 进程入口 4.2 ueventd_main …

【mysql】—— 数据库的操作

序言&#xff1a; 在上篇文章我已经对数据库进行了详细的介绍&#xff0c;接下来我们就将上手学习操作的细节了。本篇文章便带领大家去学习有关库操作的基本知识&#xff01;&#xff01;&#xff01; 目录 &#xff08;一&#xff09;库的操作 1、 创建数据库 2、字符集和…

创新涌动于先,PingCAP 用户峰会 2023 成功举办

2023 年 7 月 13 日&#xff0c;企业级开源分布式数据库厂商 PingCAP 在京成功举办 PingCAP 用户峰会 2023。本届峰会以“创新涌动于先”为主题&#xff0c;PingCAP 全面解析了 AI 时代 TiDB 的演进方向&#xff0c;宣布 TiDB Serverless 正式商用。会上&#xff0c;PingCAP 携…

功率信号源操作注意事项有哪些

功率信号源一种用来生成特定频率、幅度、相位和波形的电信号的设备&#xff0c;通常用于测试电子设备的性能。在使用功率信号源的过程中&#xff0c;需要注意一些安全性和操作规范。下面是一些有关功率信号源操作注意事项的详细介绍。 图&#xff1a;安泰ATG-2000系列功率信号源…

Python开源内容管理系统: Djangocms

一、Djangocms简介 Djangocms是基于Python语言开发的一款开源内容管理系统。它采用了Django框架&#xff0c;可以快速构建高效、灵活的网站。Djangocms拥有强大的可扩展性和易用性&#xff0c;支持多语言、多站点等功能。此外&#xff0c;Djangocms还提供了丰富的插件和主题&a…

JVM学习笔记(二)内存结构

目录 一、JVM内存结构 1. 虚拟机栈&#xff08;JVM Stacks&#xff09; 1&#xff09;定义 2&#xff09;栈内存溢出 3&#xff09; 线程运行诊断 案例1&#xff1a;CPU占用过高 案例2&#xff1a;程序运行很长时间没有结果​编辑 2. 本地方法栈&#xff08;Native Meth…

AlGaN基深紫外FP激光器仿真模型及材料信息数据库有何用途?

波长范围为UVC波段&#xff08;100-280 nm&#xff09;的深紫外FP&#xff08;Fabry-Pero&#xff0c;法布里和珀罗是两位法国的科学家&#xff09;激光器可广泛应用于数据通信、光通信、3D打印、材料加工、显示与照明、激光雷达、人脸/手势识别、医疗和表面监测等领域。FP激光…