Clickhouse 三节点三分片六实例双副本部署,用户密码权限配置,cpu内存资源优化

news2024/12/23 12:20:46

文章目录

  • 1. rpm安装ck
  • 2. 集群规划
  • 3. config.xml文件配置
    • (1)分片副本信息配置
    • (2)zookeeper信息配置
    • (3)macros 信息配置
    • (4)注释掉映射信息
    • (5)修改实例中的日志路径
    • (6)user.xml信息配置
    • (7)端口修改
  • 4. 服务启停(需要指定配置文件)
  • 5. clickhouse客户端常用参数
  • 6. clickhouse CPU内存优化配置
  • 7. 用户密码配置


官方文档

1. rpm安装ck

分别在每台集器上上传rpm包,放在同一目录下,然后直接解压即可。
解压命令:sudo rpm -ivh *.rpm


2. 集群规划

在这里插入图片描述

经过测试验证,6实例配置文件的所有信息统一都放在config.xml文件中更妥当,省略去metrika.xml文件。否则6实例需要多维护12个配置文件,而且config.xml中配置映射也可能找不到其它metrika.xml文件,最终导致客户端不显示集群,无法正常使用。

Clickhouse01 实例1

端口tcp_port 9003, http_port 8123, interserver_http_port 9009;
config.xml文件为/etc/clickhouse-server/ config01.xml;
users.xml文件为/etc/clickhouse-server/users01.xml;

Clickhouse01 实例2

端口tcp_port 9004, http_port 8124, interserver_http_port 9010;
config.xml文件为/etc/clickhouse-server/ config02.xml;
users.xml文件为/etc/clickhouse-server/users02.xml;

Clickhouse02 实例1

端口tcp_port 9003, http_port 8123, interserver_http_port 9009;
config.xml文件为/etc/clickhouse-server/ config01.xml;
users.xml文件为/etc/clickhouse-server/users01.xml;

Clickhouse02 实例2

端口tcp_port 9004, http_port 8124, interserver_http_port 9010;
config.xml文件为/etc/clickhouse-server/ config02.xml;
users.xml文件为/etc/clickhouse-server/users02.xml;

Clickhouse03 实例1

端口tcp_port 9003, http_port 8123, interserver_http_port 9009;
config.xml文件为/etc/clickhouse-server/ config01.xml;
users.xml文件为/etc/clickhouse-server/users01.xml;

Clickhouse03 实例2

端口tcp_port 9004, http_port 8124, interserver_http_port 9010;
config.xml文件为/etc/clickhouse-server/ config02.xml;
users.xml文件为/etc/clickhouse-server/users02.xml;

3. config.xml文件配置

(1)分片副本信息配置

如下信息是3分片1副本的配置信息,这部分信息是所有实例中相同的
需要在每台节点下中的config01.xml 和 config02.xml 文件中配置。

<shards3_replications2>
	<shard>
		<internal_replication>true</internal_replication>
		<weight>1</weight>
		<replica>
			<host>foton1</host>
			<port>9003</port>
		</replica>
		<replica>
			<host>foton2</host>
			<port>9004</port>
		</replica>
	</shard>
	<shard>
		<internal_replication>true</internal_replication>
		<weight>1</weight>
		<replica>
			<host>foton2</host>
			<port>9003</port>
		</replica>
		<replica>
			<host>foton3</host>
			<port>9004</port>
		</replica>
	</shard>
	<shard>
		<internal_replication>true</internal_replication>
		<weight>1</weight>
		<replica>
			<host>foton3</host>
			<port>9003</port>
		</replica>
		<replica>
			<host>foton1</host>
			<port>9004</port>
		</replica>
	</shard>
</shards3_replications2>

(2)zookeeper信息配置

这部分信息也是所有实例相同

<zookeeper>
	<node>
		<host>foton1</host>
		<port>2181</port>
	</node>
	<node>
		<host>foton2</host>
		<port>2181</port>
	</node>
	<node>
		<host>foton3</host>
		<port>2181</port>
	</node>
</zookeeper>

(3)macros 信息配置

Clickhouse01下的config01.xml配置如下:

<macros>
    <layer>01</layer>
    <shard>01</shard>
    <replica>cluster01_01_1</replica>
</macros>

Clickhouse01下的config02.xml配置如下:

<macros>
    <layer>01</layer>
    <shard>03</shard>
    <replica>cluster01_03_2</replica>
</macros>

Clickhouse02下的config01.xml配置如下:

<macros>
    <layer>01</layer>
    <shard>02</shard>
    <replica>cluster01_02_1</replica>
</macros>

Clickhouse02下的config02.xml配置如下:

<macros>
    <layer>01</layer>
    <shard>01</shard>
    <replica>cluster01_01_2</replica>
</macros>

Clickhouse03下的config01.xml配置如下:

<macros>
    <layer>01</layer>
    <shard>03</shard>
    <replica>cluster01_03_1</replica>
</macros>

Clickhouse03下的config02.xml配置如下:

<macros>
    <layer>01</layer>
    <shard>02</shard>
    <replica>cluster01-02-2</replica>
</macros>

(4)注释掉映射信息

由于省略去了metrika.xml文件,在config.xml中要注释掉对应的映射信息

<!--
<zookeeper incl="zookeeper-servers" optional="true" />
<include_from>/etc/clickhouse-server/config.d/metrika*.xml</include_from>
-->

(5)修改实例中的日志路径

Clickhouse01/clickhouse02/clickhouse03中config01.xml中修改如下:

<log>/var/log/clickhouse-server01/clickhouse-server.log</log>
<errorlog>/var/log/clickhouse-server01/clickhouse-server.err.log</errorlog>

<!-- Path to data directory, with trailing slash. -->
<path>/var/lib/clickhouse01/</path>

<!-- Path to temporary data for processing hard queries. -->
<tmp_path>/var/lib/clickhouse01/tmp/</tmp_path>

<!-- Directory with user provided files that are accessible by 'file' table function. -->
<user_files_path>/var/lib/clickhouse01/user_files/</user_files_path>

Clickhouse01/clickhouse02/clickhouse03中config02.xml中修改如下:

<log>/var/log/clickhouse-server02/clickhouse-server.log</log>
<errorlog>/var/log/clickhouse-server02/clickhouse-server.err.log</errorlog>

<!-- Path to data directory, with trailing slash. -->
<path>/var/lib/clickhouse02/</path>

<!-- Path to temporary data for processing hard queries. -->
<tmp_path>/var/lib/clickhouse02/tmp/</tmp_path>

 <!-- Directory with user provided files that are accessible by 'file' table function. -->
 <user_files_path>/var/lib/clickhouse02/user_files/</user_files_path>

(6)user.xml信息配置

Clickhouse01/clickhouse02/clickhouse03中config01.xml中修改如下:

<!-- Sources to read users, roles, access rights, profiles of settings, quotas. -->
<user_directories>
    <users_xml>
        <!-- Path to configuration file with predefined users. -->
        <path>users01.xml</path>
    </users_xml>
    <local_directory>
        <!-- Path to folder where users created by SQL commands are stored. -->
        <path>/var/lib/clickhouse01/access/</path>
    </local_directory>

Clickhouse01/clickhouse02/clickhouse03中config01.xml中修改如下:

<!-- Sources to read users, roles, access rights, profiles of settings, quotas. -->
<user_directories>
    <users_xml>
        <!-- Path to configuration file with predefined users. -->
        <path>users02.xml</path>
    </users_xml>
    <local_directory>
        <!-- Path to folder where users created by SQL commands are stored. -->
        <path>/var/lib/clickhouse02/access/</path>
    </local_directory>

(7)端口修改

Clickhouse01/clickhouse02/clickhouse03中config01.xml中修改如下:

<http_port>8123</http_port>
<tcp_port>9003</tcp_port>

Clickhouse01/clickhouse02/clickhouse03中config02.xml中修改如下:

<http_port>8124</http_port>
<tcp_port>9004</tcp_port>

4. 服务启停(需要指定配置文件)

集群信息命令
3分片2副本集群shards3_replications2
对外端口8124
客户端入口clickhouse-client --port 9004 -m
ck集群启停需要指定配置文件
后台启动nohup clickhouse-server --config-file=/etc/clickhouse-server/config01.xml >null 2>&1 & ,nohup clickhouse-server --config-file=/etc/clickhouse-server/config02.xml >null 2>&1 & (3台节点)
停止:ps -efgrep clickhouse 查看进程 kill -9 杀死

5. clickhouse客户端常用参数

客户端参数含义
-h -host指定服务器主机
–port指定端口,默认值:9000
-u -user指定用户,默认:default
–password 密码默认:空字符串
-d -database指定操作的数据库,默认:default
-q -query非交互式下的查询语句
-m -multiline允许多行的居于查询
-f -format使用指定的默认格式输出结果
-t -time非交互式下会打印查询执行的时间窗口
-stacktrace如果出现异常,会打印堆栈跟踪信息
-config-file配置文件的名称

6. clickhouse CPU内存优化配置

参数示例:
config.xml

<max_concurrent_queries>200</max_concurrent_queries>
<max_table_size_to_drop>0</max_table_size_to_drop>

users.xml

<background_pool_size>128</background_pool_size>
<max_memory_usage>100000000000</max_memory_usage>
<max_bytes_before_external_group_by>50000000000</max_bytes_before_external_group_by>
<max_bytes_before_external_sort>80000000000</max_bytes_before_external_sort>
<background_schedule_pool_size>128</background_schedule_pool_size>
<background_distributed_schedule_pool_size>128</background_distributed_schedule_pool_size>

参数含义:

<background_pool_size>128</background_pool_size>
此参数在 users.xml中,用于设置后台线程池的大小, merge 线程就是在该线程池中执行,该线程池不仅仅是给 merge 线程用的,默认值 16,允许的前提下建议改成 cpu 个数的 2倍(线程数)。

<background_schedule_pool_size>128</background_schedule_pool_size>
此参数在 users.xml中,用于设置执行后台任务(复制表、 Kafka 流、DNS 缓存更新)的线程数。 默认 128,建议改成 cpu 个数的 2 倍(线程数)。

<background_distributed_schedule_pool_size>128</background_distributed_schedule_pool_size>
此参数在 users.xml中,用于设置分布式发送执行后台任务的线程数,默认 16,建议改成 cpu个数的 2 倍(线程数)。

<max_memory_usage>100000000000</max_memory_usage>
此参数在 users.xml中,表示单次 Query 占用内存最大值,该值可以设置的比较大,这样可以提升集群查询的上限。保留一点给 OS,比如 128G内存的机器,设置为 100GB。

<max_bytes_before_external_group_by>50000000000</max_bytes_before_external_group_by>
此参数在 users.xml中,一般按照 max_memory_usage 的一半设置内存,当 group 使用内存超过阈值后会刷新到磁盘进行。因为 clickhouse 聚合分两个阶段:查询并及建立中间数据、合并中间数据,结合上一项,建议 50GB。注意变量是字节

<max_bytes_before_external_sort>80000000000</max_bytes_before_external_sort>
此参数在 users.xml中,当 order by 已使用 max_bytes_before_external_sort 内存就进行溢写磁盘(基于磁盘排序),如果不设置该值,那么当内存不够时直接抛错,设置了该值 order by 可以正常完成,但是速度相对存内存来说肯定要慢点(实测慢的非常多,但比报错好)。

<max_concurrent_queries>200</max_concurrent_queries>
此参数在 config.xml中,用于设置最大并发处理的请求数 (包含 select,insert 等),默认值 100,推荐 200(不够再加)~300。
<max_table_size_to_drop>0</max_table_size_to_drop>
此参数在 config.xml 中,应用于需要删除表或分区的情况,默认是50GB,意思是如果删除 50GB 以上的分区表会失败。建议修改为 0,这样不管多大的分区表都可以删除。

7. 用户密码配置

users.xml中在user下添加agg用户,密码为123

<agg>
	<password>123</password>
	<networks incl="networks" replace="replace">
		<ip>::/0</ip>
	</networks>
	<profile>default</profile>
	<quota>default</quota>
</agg>

config.xml,比如要把shards3_replications2集群的权限给agg用户那么就需要在集群信息中配置用户密码,如下。

<shards3_replications2>
	<shard>
		<internal_replication>true</internal_replication>
		<weight>1</weight>
		<replica>
			<host>foton1</host>
			<port>9003</port>
			<user>agg</user>
			<password>123</password>
		</replica>
		<replica>
			<host>foton2</host>
			<port>9004</port>
			<user>agg</user>
			<password>123</password>
		</replica>
	</shard>
	<shard>
		<internal_replication>true</internal_replication>
		<weight>1</weight>
		<replica>
			<host>foton2</host>
			<port>9003</port>
			<user>agg</user>
			<password>123</password>
		</replica>
		<replica>
			<host>foton3</host>
			<port>9004</port>
			<user>agg</user>
			<password>123</password>
		</replica>
	</shard>
	<shard>
		<internal_replication>true</internal_replication>
		<weight>1</weight>
		<replica>
			<host>foton3</host>
			<port>9003</port>
			<user>agg</user>
			<password>123</password>
		</replica>
		<replica>
			<host>foton1</host>
			<port>9004</port>
			<user>agg</user>
			<password>123</password>
		</replica>
	</shard>
</shards3_replications2>

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

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

相关文章

深入理解MySQL——master thread分析

1. master thread的线程分析 master thread的线程优先级别最高。其内部由几个循环&#xff08;loop&#xff09;组成&#xff1a;主循环&#xff08;loop&#xff09;、后台循环&#xff08;background loop&#xff09;、刷新循环&#xff08;flush loop&#xff09;、暂停循…

基于springcloud的学习笔记1

概述springcloud的微服务分布式架构对于springboot的服务集成开发最大的优点就是解决了&#xff0c;springboot中模块之间的高耦合度&#xff0c;springcloud进行高粒度的拆分服务之后就可以降低在高并发下会出现的所有模块服务不可用。同理springcloud就是拆分出不同的模块成为…

Window 环境 安装 mycli

Window 环境 安装 Mycli 平时都用 图形化界面操作MySQL 如 navicat, workbench. 为了更专业一点也锻炼一下动手能力&#xff0c;现在打算换成命令行的方式操作。了解到 myclli这个工具。方便体验&#xff0c;就先在window环境装一个玩玩。 mycli 是一个 MySQL 命令行客户端工具…

【LeetCode每日一题】——50.Pow(x, n)

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 数学 二【题目难度】 中等 三【题目编号】 50.Pow(x, n) 四【题目描述】 实现 pow(x,n)pow(x…

Exchange漏洞分析:SSRF RCE

0x00 前言 在今年3月份&#xff0c;微软公布了多个Microsoft Exchange的高危漏洞。ProxyLogon是Exchange历史上最具影响力的漏洞之一&#xff0c;有上千台Exchange服务器被植入了webshell后门。 0x01 漏洞描述 CVE-2021-26855是一个SSRF漏洞&#xff0c;利用该漏洞可以绕过E…

一文搞定Nginx的压缩、黑白名单、防盗链、零拷贝、跨域、双机热备等知识

引言早期的业务都是基于单体节点部署&#xff0c;由于前期访问流量不大&#xff0c;因此单体结构也可满足需求&#xff0c;但随着业务增长&#xff0c;流量也越来越大&#xff0c;那么最终单台服务器受到的访问压力也会逐步增高。时间一长&#xff0c;单台服务器性能无法跟上业…

2020网络安全投融资趋势报告

声明 本文是学习2020网络安全投融资趋势报告. 下载地址 http://github5.com/view/55012而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 物联网安全&#xff1a;5G的商业化推动物联网安全加速落地 在应用安全领域&#xff0c;本文共收录投融资事件13起…

IOT云平台 simple(6)springboot netty实现IOT云平台基本的架构(mqtt、Rabbitmq)

本系列教程包括&#xff1a; IOT云平台 simple&#xff08;0&#xff09;IOT云平台简介 IOT云平台 simple&#xff08;1&#xff09;netty入门 IOT云平台 simple&#xff08;2&#xff09;springboot入门 IOT云平台 simple&#xff08;3&#xff09;springboot netty实现TCP Se…

告别Whitelabel Error Page!

相信在JavaWeb开发中不少小伙伴会遇到这个页面吧&#xff0c;特别是初学者基础不扎实不牢固然后网上说的一大堆莫名其妙的解法&#xff0c;千万不要盲目跟着改&#xff0c;建议多读几篇博客&#xff0c;再根据自己的知识分析一下开发流程。首先status404&#xff0c;肯定是我访…

Unity联网多人游戏技术方案调研

关于联网方案 Listen Server (Host) 和 Relay转发服务器游戏包同时包含客户端和服务端逻辑&#xff0c;联网时一个客户端开主&#xff0c;称为Host&#xff0c;其他客户端连入。局域网和互联网都支持。互联网需要有一个匹配服务器帮助找到不同人建立的主机。如果不使用Relay服…

校招前端二面常考react面试题(边面边更)

高阶组件 高阶函数&#xff1a;如果一个函数接受一个或多个函数作为参数或者返回一个函数就可称之为高阶函数。 高阶组件&#xff1a;如果一个函数 接受一个或多个组件作为参数并且返回一个组件 就可称之为 高阶组件。 react 中的高阶组件 React 中的高阶组件主要有两种形式…

verilog学习笔记- 6)verilog基础知识

目录 Verilog 的逻辑值: Verilog 的标识符&#xff08;类似C中的变量名&#xff09;: 1) 定义: 2) 规范建议: Verilog 的数字进制格式: Verilog 的数据类型: 1) 寄存器类型&#xff1a; 2) 线网类型&#xff1a; 3) 参数类型&#xff1a; Verilog 的运算符&#xff1a…

Logistic Regression 逻辑斯蒂回归

文章目录5、Logistic Regression 逻辑斯蒂回归5.1 回归任务5.1.1 MNIST Dataset5.1.2 CIFAR-10 Dataset5.2 Regression vs Classification 回归 vs 分类5.3 Sigmoid functions5.3.1 Logistic Function [0, 1]5.3.2 Other Functions [-1, 1]5.4 Model 模型5.5.1 torch.sigmoid()…

Mybatis基本使用

Mybatis1、Mybatis简介1.1、什么是MyBatis1.2、持久化1.3、持久层1.4、为什么需要Mybatis2、MyBatis第一个程序2.1、代码演示3、CRUD操作3.1、namespace3.2、select3.3、insert3.4、update3.5、delete3.6、思考题4、配置解析4.1、核心配置文件4.2、environments元素4.3、mapper…

点进详情巩固 react-router-dom v6

使用几段代码,再次巩固一下 v6 的使用 0. 安装 npm i react-router-dom1. 配置路由 import {StrictMode } from "react" import ReactDOM from "react-dom/client" import App from "./App" import {HashRouter

Word处理控件Aspose.Words功能演示:使用 C# 将 Word 转换为 HTML

Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。此外&#xff0c; Aspose API支持流行文件格式处…

实现自定义springboot的starter

引言 学过springboot的肯定用过各种starter&#xff0c;通过这些starter我们可以节省很多没有必要的配置&#xff0c;让项目更简洁&#xff0c;配置起来也更简单。那么starter是怎么开发的呢&#xff1f;这里我通过一个简单的案例演示如何创建一个自己的starter。 初始化项目…

Java毕业生就业系统学生就业统计系统

简介 本项目主要是为了统计毕业生就业情况&#xff08;就业方向分为四种&#xff1a;参加工作&#xff0c;考研&#xff0c;自主创业&#xff0c;待就业&#xff09;&#xff0c;教师可登入该系统查看学生就业情况&#xff0c;包括&#xff1a;考研、职业领域、工作城市&#…

黑马C++ 05 核心项目 —— 职工管理系统

文章目录1. 管理系统需求2. 创建管理类2.1 创建文件 workerManager.h 与 workerManager.cpp2.2 头文件实现 workerManager.h —— 只做函数声明不做实现2.3 源文件实现 workerManager.cpp —— 对声明的函数进行实现3. 菜单功能3.1 添加成员函数 —— workerManager.h添加 void…

Tic-Tac-Toe人机对弈程序(python实现)

目录 1. 前言 2. 处理流程 3. 代码 4. 代码说明 4.1 棋盘显示 4.2 初始化 4.3 人类棋手的下一步 4.4 AI棋手的下一步 4.5 终局及胜负判断 5. 棋局示例 1. 前言 前面几篇博客&#xff08;以循序渐进的方式&#xff09;实现了Tic-Tac-Toe游戏的棋局搜索、遍历以及所有可…