【ClickHouse】副本、分片集群 (六)

副本
副本的目的主要是保障数据的高可用性,即使一台ClickHouse节点宕机,那么也可以从其他服务器获得相同的数据。

https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/replication/

副本写入流程
写入流程如图-18所示:
在这里插入图片描述

图-18 写入流程
配置步骤
1)启动zookeeper集群。
2)在hadoop101的/etc/clickhouse-server/config.d目录下创建一个名为metrika.xml的配置文件,内容如下:
注:也可以不创建外部文件,直接在config.xml中指定。

<?xml version="1.0"?>
<yandex>
<zookeeper-servers>
<node index="1">
<host>hadoop101</host>
<port>2181</port>
</node>
<node index="2">
<host>hadoop102</host>
<port>2181</port>
</node>
<node index="3">
<host>hadoop103</host>
<port>2181</port>
</node>
</zookeeper-servers>
</yandex>

3)同步到hadoop102和hadoop103上。

xsync /etc/clickhouse-server/config.d/metrika.xml	

4)在hadoop101的/etc/clickhouse-server/config.xml中增加。

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

在这里插入图片描述

图-19 配置文件
5)同步到hadoop102和hadoop103上。

xsync /etc/clickhouse-server/config.xml

6)分别在hadoop102和hadoop103上启动ClickHouse服务。

clickhouse restart

注意:因为修改了配置文件,如果以前启动了服务需要重启。
注意:我们演示副本操作只需要在hadoop101和hadoop102两台服务器即可,上面的操作,我们hadoop103可以你不用同步,我们这里为了保证集群中资源的一致性,做了同步。
7)在hadoop101和hadoop102上分别建表。
副本只能同步数据,不能同步表结构,所以我们需要在每台机器上自己手动建表。
hadoop101:

create table t_order_re ( id UInt32,
sku_id String,
total_amount Decimal(16,2), 
create_time Datetime
) engine =ReplicatedMergeTree('/clickhouse/table/01/t_order','rep_001') partition by toYYYYMMDD(create_time)
primary key (id) order by (id,sku_id);

hadoop102:

create table t_order_re ( id UInt32,
sku_id String,
total_amount Decimal(16,2), 
create_time Datetime
) engine =ReplicatedMergeTree('/clickhouse/table/01/t_order','rep_002') partition by toYYYYMMDD(create_time)
primary key (id) order by (id,sku_id);

参数解释
ReplicatedMergeTree中,第一个参数是分片的zk_path一般按照:/clickhouse/table/{shard}/{table_name}的格式写,如果只有一个分片就写 01 即可。
第二个参数是副本名称,相同的分片副本名称不能相同。
在hadoop101上执行insert语句,结果如图-20所示:

insert into t_order_re values (101,'sku_001',1000.00,'2020-06-01 12:00:00'),
(102,'sku_002',2000.00,'2020-06-01 12:00:00'),
(103,'sku_004',2500.00,'2020-06-01 12:00:00'),
(104,'sku_002',2000.00,'2020-06-01 12:00:00'),
(105,'sku_003',600.00,'2020-06-02 12:00:00');

在这里插入图片描述
图-20 插入数据
在hadoop102上执行select,可以查询出结果,如图-21所示,说明副本配置正确。

图-21 执行结果
分片集群
副本虽然能够提高数据的可用性,降低丢失风险,但是每台服务器实际上必须容纳全量数据,对数据的横向扩容没有解决。
要解决数据水平切分的问题,需要引入分片的概念。通过分片把一份完整的数据进行切分,不同的分片分布到不同的节点上,再通过Distributed表引擎把数据拼接起来一同使用。
Distributed表引擎本身不存储数据,有点类似于 MyCat 之于 MySql,成为一种中间件, 通过分布式逻辑表来写入、分发、路由来操作多台节点不同分片的分布式数据。
注意:ClickHouse的集群是表级别的,实际企业中,大部分做了高可用,但是没有用分片,避免降低查询性能以及操作集群的复杂性。
集群写入流程(3 分片 2 副本共 6 个节点)
写入流程如图-22所示:
在这里插入图片描述

图-22 写入流程
集群读取流程(3 分片 2 副本共 6 个节点)
读取流程如图-23所示:
在这里插入图片描述

图-23 读取流程
集群搭建
配置的位置可以在之前的/etc/clickhouse-server/config.d/metrika.xml,内容如下。
注:也可以不创建外部文件,直接在config.xml的<remote_servers>中指定。
hadoop101配置如下:

<yandex>...省略...<listen_host>::</listen_host><remote_servers><perftest_3shards_1replicas><shard><replica><host>hadoop101</host><port>9000</port></replica></shard><shard><replica><host>hadoop102</host><port>9000</port></replica></shard><shard><replica><host>hadoop103</host><port>9000</port></replica></shard></perftest_3shards_1replicas></remote_servers><!-- zookeeper相关配置 --><zookeeper-servers><node><host>hadoop101</host><port>2181</port></node><node><host>hadoop102</host><port>2181</port></node><node><host>hadoop103</host><port>2181</port></node></zookeeper-servers><!-- 复制标识的配置,也称为宏配置,这里唯一标识一个副本名称,每个实例都要配置并且都是唯一的 --><macros><shard>01</shard><replica>01</replica></macros>  ...省略...    
</yandex>

hadoop102配置如下:

<yandex>...省略...<listen_host>::</listen_host><remote_servers><perftest_3shards_1replicas><shard><replica><host>hadoop101</host><port>9000</port></replica></shard><shard><replica><host>hadoop102</host><port>9000</port></replica></shard><shard><replica><host>hadoop103</host><port>9000</port></replica></shard></perftest_3shards_1replicas></remote_servers><!-- zookeeper相关配置 --><zookeeper-servers><node><host>hadoop101</host><port>2181</port></node><node><host>hadoop102</host><port>2181</port></node><node><host>hadoop103</host><port>2181</port></node></zookeeper-servers><!-- 复制标识的配置,也称为宏配置,这里唯一标识一个副本名称,每个实例都要配置并且都是唯一的 --><macros><shard>02</shard><replica>01</replica></macros>  ...省略...    
</yandex>

hadoop103配置如下:

    <remote_servers><perftest_3shards_1replicas><shard><replica><host>hadoop101</host><port>9000</port></replica></shard><shard><replica><host>hadoop102</host><port>9000</port></replica></shard><shard><replica><host>hadoop103</host><port>9000</port></replica></shard></perftest_3shards_1replicas></remote_servers><!-- zookeeper相关配置 -->
<zookeeper-servers><node><host>hadoop101</host><port>2181</port></node><node><host>hadoop102</host><port>2181</port></node><node><host>hadoop103</host><port>2181</port></node></zookeeper-servers><!-- 复制标识的配置,也称为宏配置,这里唯一标识一个副本名称,每个实例都要配置并且都是唯一的 --><macros><shard>03</shard><replica>01</replica></macros>  

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

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

相关文章

CATIA_DELMIA_V5R2019安装包下载及安装教程破解

以下为V5-6R2019安装说明 1.将两卷安装文件解压到同一目录内&#xff0c;互相覆盖即可 &#xff08;按用户需要下载 CATIA 或者DELMIA&#xff09; 以上为 CATIA 的安装包 以上为 DELMIA 的安装包 两者合并到一起&#xff0c;同一目录 2.解压后运行setup.exe 如遇到报错&…

数据集标注研究

主要研究数据集标注存储文件的数据存储格式 目录 0.简介1.coco128-seg数据格式1.1 分割标注格式2.YOLO格式2.1 YOLO目标识别标签2.2 yolov5-seg分割标签2.TT100K数据集标注2.1 TT100K数据集标注文件解析0.简介 1.coco128-seg数据格式 1.1 分割标注格式 如coco128-seg数据集 …

【一步一步了解Java系列】:认识异常类

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 个人主页&#xff1a;Gu Gu Study专栏&#xff1a;一步一步了解Java 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff1a;小闭…

论文阅读03(基于人类偏好微调语言模型)

1.主题 基于人类偏好微调语言模型&#xff08;Fine-Tuning Language Models from Human Preferences&#xff09; 出处&#xff1a; Fine-Tuning Language Models from Human Preferences、 2.摘要 奖励学习使得强化学习&#xff08;RL&#xff09;可以应用于那些通过人类判断…

Pydantic 全面指南:从入门到高级应用

Pydantic 简介 1.1 Pydantic 是什么&#xff1f; Pydantic 是一个用于数据验证和设置管理的 Python 库。它通过 Python 类型注解来定义数据模型&#xff0c;并提供了强大的数据验证功能。Pydantic 的主要目标是确保数据在输入和输出时的一致性和有效性。它广泛应用于各种 Pyt…

clean code-代码整洁之道 阅读笔记(第十二章)

第十二章 系统 12.1 通过选进设计达到整洁目的 Kent Beck关于简单设计的四条规则&#xff0c;对于创建具有良好设计的软件有着莫大的帮助。 据Kent所述&#xff0c;只要遵循以下规则&#xff0c;设计就能变得"简单"&#xff1a;运行所有测试&#xff1b;不可重复&…

大疆无人机航点飞行KMZ文件提取航点坐标

一、需要插件 <!-- 解析KMZ航线--><dependency><groupId>jaxen</groupId><artifactId>jaxen</artifactId><version>1.1.4</version></dependency><dependency><groupId>dom4j</groupId><a…

学习java第一百零七天

解释JDBC抽象和DAO模块 使用JDBC抽象和DAO模块&#xff0c;我们可以确保保持数据库代码的整洁和简单&#xff0c;并避免数据库资源关闭而导致的问题。它在多个数据库服务器给出的异常之上提供了一层统一的异常。它还利用Spring的AOP模块为Spring应用程序中的对象提供事务管理服…

计算机网络(概述)

该笔记为湖科大计算机网络相关笔记、教材参考计算机网络第六版 湖科大计算机网络 计算机网络概述 因特网概述 Internet和internet的区别 internet&#xff1a;只要是计算机与计算机连接&#xff0c;形成了网络&#xff0c;就可以叫internet Internet&#xff1a;泛指全世界的…

Excel 导入实例

在上一节的基础上&#xff0c;本文演示下如何导入excel数据。 Excel导入操作指导 继承ocean-easyexcel SDK&#xff0c;上一节打包生成 <dependency><groupId>com.angel.ocean</groupId><artifactId>ocean-easyexcel</artifactId><version…

晶谷电子器件烧结封装介质材料 绝缘用晶谷低温封接环保玻璃粉 耐压高

电子器件烧结封装介质材料是用于保护和封装电子器件的关键材料。 常见的电子器件烧结封装介质材料包括以下几种&#xff1a; 1. 陶瓷材料&#xff1a;具有良好的绝缘性能、耐高温性能和机械强度。 2. 高分子材料&#xff1a;如环氧树脂等&#xff0c;具有良好的柔韧性和耐湿…

k8s离线部署nginx

1. 拉取nginx离线包到本地 sudo docker save nginx:latest -o nginx.tar 2. 导入nginx image到k8s命名空间中 sudo ctr -n k8s.io images import nginx.tar 3. 编辑nginx.yaml apiVersion: apps/v1 kind: Deployment metadata:name: nginx-deployment spec:selector:match…

GitHub的基本使用方法

GitHub是一个面向开源及私有软件项目的托管平台&#xff0c;提供了版本控制功能、代码托管服务、协作功能等。以下是GitHub的基本使用方法&#xff1a; 注册并登录&#xff1a;首先&#xff0c;访问GitHub官网&#xff08;https://github.com/&#xff09;并点击右上角的"…

springCloudAlibaba之链路追踪组件---skywalking

skywalking skywalking skywalking 介绍 对于一个大型的几十个、几百个微服务构成的微服务架构系统&#xff0c;通常会遇到下面一些问题&#xff0c;比如&#xff1a;如何串联整个调用链路、快速定位问题&#xff1f;如何明确各个微服务之间的依赖关系&#xff1f;如何进行各个…

【C语言】解决C语言报错:Array Index Out of Bounds

文章目录 简介什么是Array Index Out of BoundsArray Index Out of Bounds的常见原因如何检测和调试Array Index Out of Bounds解决Array Index Out of Bounds的最佳实践详细实例解析示例1&#xff1a;访问负索引示例2&#xff1a;访问超出上限的索引示例3&#xff1a;循环边界…

ArcGIS实现不同地块分类与面积汇总

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 我们要做一个不同地块面积汇总&#xff01; 你有一批地块&#xff0c;不同面积&#xff0c;我们需…

Redis单例部署

目录 1. 概述2. 参考3. 环境4. 部署4.1 操作系统4.1.1 修改系统参数4.1.2 关闭透明大页内存4.1.3 修改系统限制 4.2 安装Redis4.2.1 下载Redis4.2.2 创建redis账号4.2.3 添加Redis环境变量4.2.4 创建Redis使用目录4.2.5 安装Redis4.2.6 手动修改配置文件&#xff08;**可跳过&a…

javaSE字符串学习笔记

API和API帮助文档 API API(Application Programming Interface)&#xff1a;应用程序编程接口简单理解&#xff1a;API酒啊别人已经写好的东西&#xff0c;我们不需要自己编写&#xff0c;直接使用即可。 API这个术语在编程圈中非常常见.我第一次接触API这个词语是在大一下。老…

【办公技巧】如何编辑带有限制编辑密码的PDF文件?

PDF文件打开之后发现设置了限制编辑&#xff0c;功能栏中的编辑按钮都是灰色的&#xff0c;导致PDF文件里的内容无法编辑。那么带有限制编辑的PDF文件&#xff0c;如何编辑&#xff1f;今天分享两个方法。 方法一&#xff1a; 我们可以将PDF文件转换成其他格式&#xff0c;有…

简单理解爬虫的概念

简单来说&#xff1a; 爬虫&#xff0c;即网络蜘蛛&#xff0c;是伪装成客户端与服务器进行数据交互的程序。 代码 代码教程分享&#xff08;无偿&#xff09;&#xff1a; 思路 1.获取网页的源码 pythondef askURL(url):head{"User-Agent":"Mozilla/5.0 (L…