Clickhouse 学习笔记(6)—— ClickHouse 分片集群

前置知识:

Clickhouse学习笔记(5)—— ClickHouse 副本-CSDN博客

与副本对比:

副本虽然能够提高数据的可用性,降低丢失风险,但是每台服务器实际上必须容纳全量数据,对数据的横向扩容没有解决

要解决数据水平切分的问题,需要引入分片的概念。通过分片把一份完整的数据进行切分,不同的分片分布到不同的节点上,再通过 Distributed 表引擎把数据拼接起来一同使用

Distributed 表引擎本身不存储数据,有点类似于 MyCat 之于 MySql,成为一种中间件,通过分布式逻辑表来写入、分发、路由来操作多台节点不同分片的分布式数据

集群写入流程(3分片 2副本 共6节点)

一般来说internal_replication这一参数都是为true的,可以减轻distribute节点的压力

集群读取流程(3分片 2副本 共6节点)

所谓errors_count就是在通信过程中产生错误的次数

集群配置流程(2分片 只有1个分片有副本 3节点)

集群架构示意

1.新建配置文件metrika-shard.xml

在hadoop102上,进入/etc/clickhouse-server/config.d

新建文件metrika-shard.xml

也可以不创建外部文件,直接在 config.xml 的<remote_servers>中指定

先文件中写入内容(hadoop102):

<?xml version="1.0"?>
<yandex><remote_servers><gmall_cluster> <!-- 集群名称--> <shard> <!--集群的第一个分片--><internal_replication>true</internal_replication><replica> <!--该分片的第一个副本--><host>hadoop102</host><port>9000</port></replica><replica> <!--该分片的第二个副本--><host>hadoop103</host><port>9000</port></replica></shard><shard> <!--集群的第二个分片--><internal_replication>true</internal_replication><replica> <!--该分片的第一个副本--><host>hadoop104</host><port>9000</port></replica></shard></gmall_cluster></remote_servers><zookeeper-servers><node index="1"><host>hadoop102</host><port>2181</port></node><node index="2"><host>hadoop103</host><port>2181</port></node><node index="3"><host>hadoop104</host><port>2181</port></node></zookeeper-servers><macros><shard>01</shard> <!--不同机器放的分片数不一样--><replica>rep_1_1</replica> <!--不同机器放的副本数不一样--></macros></yandex>

hadoop103:(仅macros参数不同)

  <macros><shard>01</shard> <!--不同机器放的分片数不一样--><replica>rep_1_2</replica> <!--不同机器放的副本数不一样--></macros>

hadoop104:(仅macros参数不同)

  <macros><shard>02</shard> <!--不同机器放的分片数不一样--><replica>rep_2_1</replica> <!--不同机器放的副本数不一样--></macros>

2.修改config.xml

然后同步到hadoop103、104

3.重启服务

sudo clickhouse restart

查看是否启动成功:ps -ef | grep clickhouse

集群功能测试

在hadoop102创建表,会自动同步到hadoop103和104上

create table st_order_mt on cluster gmall_cluster (\id UInt32,\sku_id String,\total_amount Decimal(16,2),\create_time Datetime\
) engine =ReplicatedMergeTree('/clickhouse/tables/{shard}/st_order_mt','{replica}')\
partition by toYYYYMMDD(create_time)\
primary key (id)\
order by (id,sku_id);

其中on cluster后面要设置配置文件中自定义的集群名称

ReplicatedMergeTree中的分片和副本名称从配置文件的宏定义(marcos)中获取

可以看到在103和104上都有对应的表:

然后在 hadoop102 上创建 Distribute 分布式表

create table st_order_mt_all on cluster gmall_cluster\
(id UInt32, \sku_id String,\total_amount Decimal(16,2),\create_time Datetime\
)engine = Distributed(gmall_cluster,default, st_order_mt,hiveHash(sku_id));

参数含义:

Distributed(集群名称,库名,本地表名,分片键)

分片键必须是整型数字,所以用 hiveHash 函数转换,也可以 rand()

同样也可以同步到103和104上:

然后在hadoop102上插入数据:

insert into st_order_mt values\
(201,'sku_009',1000.00,'2020-06-01 12:00:00') ,\
(202,'sku_009',1000.00,'2020-06-01 12:00:00') ,\
(201,'sku_009',1000.00,'2020-06-01 12:00:00') ,\
(201,'sku_009',1000.00,'2020-06-01 12:00:00') ,\
(201,'sku_009',1000.00,'2020-06-01 12:00:00') ,\
(201,'sku_009',1000.00,'2020-06-01 12:00:00') ,\
(201,'sku_009',1000.00,'2020-06-01 12:00:00') ,\
(201,'sku_009',1000.00,'2020-06-01 12:00:00') ,\
(201,'sku_009',1000.00,'2020-06-01 12:00:00') ,\
(201,'sku_009',1000.00,'2020-06-01 12:00:00') ,\(202,'sku_002',2000.00,'2020-06-01 12:00:00'),\
(203,'sku_004',2500.00,'2020-06-01 12:00:00'),\
(204,'sku_002',2000.00,'2020-06-01 12:00:00'),\
(205,'sku_003',600.00,'2020-06-02 12:00:00');

查询分布式表和本地表即可得到结果;

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

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

相关文章

Redis学习笔记8:基于springboot的Lettuce redis客户端connectTimeout、timeout、shutdownTimeout

一个对springboot redis框架进行重写&#xff0c;支持lettuce、jedis、连接池、同时连接多个集群、多个redis数据库、开发自定义属性配置的开源SDK <dependency><groupId>io.github.mingyang66</groupId><artifactId>emily-spring-boot-redis</art…

基于工业智能网关的汽车充电桩安全监测方案

近年来&#xff0c;我国新能源汽车产业得到快速发展&#xff0c;电动车产量和销量都在持续增长&#xff0c;不仅国内市场竞争激烈&#xff0c;而且也远销海外&#xff0c;成为新的经济增长点。但与此同时&#xff0c;充电设施的运营却面临着安全和效率的双重挑战。 当前的充电桩…

Linux开发工具之编辑器vim

文章目录 1.vim是啥?1.1问问度娘1.2自己总结 2.vim的初步了解2.1进入和退出2.2vim的模式1.介绍2.使用 3.vim的配置3.1自己配置3.2下载插件3.3安装大佬配置好的文件 4.程序的翻译 1.vim是啥? 1.1问问度娘 1.2自己总结 vi/vim都是多模式编辑器&#xff0c;vim是vi的升级版本&a…

【Excel】补全单元格值变成固定长度

我们知道股票代码都为6位数字&#xff0c;但深圳中小板代码前面以0开头&#xff0c;数字格式时前面的0会自动省略&#xff0c;现在需要在Excel表格补全它。如下图&#xff1a; 这时我们需要用到特殊的函数&#xff1a;TEXT或者RIGHT TEXT函数是Excel中一个非常有用的函数。TEX…

UnRaid安装安装仓库管理系统GreaterWMS

文章目录 0、前言1、安装流程1.1、克隆GreaterWMS项目到UnRaid本地目录1.2、修改项目前后端端口1.3、修改baseurl1.4、修改Nginx.conf配置文件1.5、安装依赖插件1.5.1、Docker Compose Manager插件1.5.2、Python3环境 1.6、创建GreaterWMS容器1.6.1、为前后端启动脚本赋执行权限…

【数据结构】归并排序

#include<iostream>using namespace std;void Merge(int* arr,int left,int right,int mid, int*& tmparr) {int begin1 left, end1 mid;int begin2 mid 1, end2 right;int tmpi left;//下面合并两个数组为一个有序数组&#xff08;升序&#xff09;&#xff1…

Protobuf简介

Protobuf 定义&#xff1a;可序列化的数据交换格式 用途&#xff1a;用于通信协议&#xff08;数据&#xff09;&#xff0c;数据存储等 特点&#xff1a;语言无关&#xff0c;平台无关&#xff0c;高效&#xff0c;扩展性好。 相近产品&#xff1a;XML/JSON 优点&#xff1a;…

Amazon EC2 Serial Console 现已在其他亚马逊云科技区域推出

即日起&#xff0c;交互式 EC2 Serial Console 现也在以下区域推出&#xff1a;中东&#xff08;巴林&#xff09;、亚太地区&#xff08;雅加达&#xff09;、非洲&#xff08;开普敦&#xff09;、中东&#xff08;阿联酋&#xff09;、亚太地区&#xff08;香港&#xff09;…

AI系统ChatGPT源码+详细搭建部署教程+AI绘画系统+支持GPT4.0+Midjourney绘画+已支持OpenAI GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

JDBC(二)

第4章 操作BLOB类型字段 4.1 MySQL BLOB类型 MySQL中&#xff0c;BLOB是一个二进制大型对象&#xff0c;是一个可以存储大量数据的容器&#xff0c;它能容纳不同大小的数据。 插入BLOB类型的数据必须使用PreparedStatement&#xff0c;因为BLOB类型的数据无法使用字符串拼接写…

数据结构之红黑树

红黑树的概念 红黑树&#xff08;Red-Black Tree&#xff09;同AVL树一样, 也是一种自平衡的二叉搜索树, 但在每个结点上增加一个存储位表示结点的颜色, 可以是Red或Black, 通过对任何一条从根到叶子的路径上各个结点着色方式的限制, 红黑树确保没有一条路径会比其他路径长出俩…

Git分支以及标签的介绍

目录 一. Git分支 四大环境 使用分支操作 pull拉取远程指定分支以及push推送到远程指定分支 场景应用“分支的新建与合并” 二. Git标签 使用标签操作 一. Git分支 几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来&…

【电路笔记】-节点电压分析和网状电流分析

节点电压分析和网状电流分析 文章目录 节点电压分析和网状电流分析1、节点电压分析1.1 概述1.2 示例 2、网格电流分析2.1 概述2.2 示例 3、总结 正如我们在上一篇介绍电路分析基本定律的文章中所看到的&#xff0c;基尔霍夫电路定律 (KCL) 是计算任何电路中未知电压和电流的强大…

kafka微服务学习

消息中间件对比&#xff1a; 1、吞吐、可靠性、性能 Kafka安装 Kafka对于zookeeper是强依赖&#xff0c;保存kafka相关的节点数据&#xff0c;所以安装Kafka之前必须先安装zookeeper Docker安装zookeeper 下载镜像&#xff1a; docker pull zookeeper:3.4.14创建容器 do…

CHM Viewer Star 6.3.2(CHM文件阅读)

CHM Viewer Star 是一款适用于 Mac 平台的 CHM 文件阅读器软件&#xff0c;支持本地和远程 CHM 文件的打开和查看。它提供了直观易用的界面设计&#xff0c;支持多种浏览模式&#xff0c;如书籍模式、缩略图模式和文本模式等&#xff0c;并提供了丰富的功能和工具&#xff0c;如…

Goland # Ubunu(WSl2) # $GOPATH/go.mod exists but should not

问题剖析 如果你设置了环境变量$GOPATH&#xff0c;Go 将默认在 $GOPATH/pkg/ 中下载和导入依赖库&#xff0c;而 go.mod文件则是将当前工作目录作为项目根目录&#xff0c;从 ./pkg/ 中下载和导入依赖库。因此&#xff0c;当$GOPATH 指向 go.mod 所在目录时&#xff0c;就会产…

02MyBatisPlus条件构造器,自定义SQL,Service接口

一、条件构造器 1.MyBatis支持各种复杂的where条件&#xff0c;满足开发的需求 Wrapper是条件构造器&#xff0c;构建复杂的where查询 AbstractWrapper有构造where条件的所有方法&#xff0c;QueryWrapper继承后并有自己的select指定查询字段。UpdateWrapper有指定更新的字段的…

Ocelot:.NET开源API网关提供路由管理、服务发现、鉴权限流等功能

随着微服务的兴起&#xff0c;API网关越来越常见。API网关是连接应用程序和用户之间的桥梁&#xff0c;就像一个交通指挥员&#xff0c;负责处理所有进出应用的数据和请求&#xff0c;确保安全、高效、有序地流通。 今天给大家推荐一个.NET开源API网关。 01 项目简介 Ocelot…

python用pyinstaller打包exe,去掉黑窗口

使用Python编写程序将Python脚本打包成可执行文件&#xff08;EXE&#xff09;,但是会有一个命令框产生&#xff0c;很烦&#xff0c;所以&#xff0c;去掉这个框 1&#xff0c;安装pyinstaller pip install pyinstaller2&#xff0c;打包产生cmd命令框 pyinstaller --onefi…

C# ZXing 二维码,条形码生成与识别

C# ZXing 二维码条形码生成识别 安装ZXing使用ZXing生成条形码生成二维码生成带Logo的二维码识别二维码、条形码 安装ZXing NuGet搜索ZXing安装ZXing.Net包 使用ZXing using ZXing; using ZXing.Common; using ZXing.QrCode; using ZXing.QrCode.Internal; 生成条形码 //…