ClickHouse学习笔记之分片集群

介绍

副本虽然可以提高数据的可用性,但每台服务器必须容纳全量数据,没有支持数据的横向扩容。要解决数据水平切分问题,需要引入分片的概念,通过分片把一份完整的数据进行切分,不同的分片分布到不同的节点上,再通过Distributed分布表引擎把数据拼接起来使用。
分布引擎本身不存储数据,而是通过分布式逻辑进行不同分片的分布式数据的写入、分发和路由。
因为ClickHouse的集群是表级别的,所以实际企业大部分做了高可用,但没有分片,以避免降低查询性能和操作集群的复杂度。

集群写入流程

以3分片,每个分片2个副本,共6个结点为例:
在这里插入图片描述
绿色表示打开分片内部复制的情况,黄色表示关闭分片内部复制的情况。打开分片内部复制时,客户端向分布式表distribute hdp1发送写命令,distribute hdp1只会向三个切片的一个副本写入数据,上图中即为hdp1 s1r1hdp3 s2r3hdp5 s3r5,而后每个副本向该切片的另一个副本再写入数据,即hdp1 s1r1hdp2 s1r2hdp3 s2r3hdp4 s2r4hdp5 s3r5hdp6 s3r6写入数据。关闭分片内部复制时,distribute hdp1就得自己向所有副本写入数据。

集群读取流程

以3分片,每个分片2个副本,共6个结点为例:
在这里插入图片描述
当客户端向分布表发送读命令时,分布表向每个分片预读取数据,并计算错误数errors_count,优先选择分片内错误数小的副本数据,如果存在多个拥有最小错误数的副本,则通过随机、顺序、第一顺位优先或host名称近似四种方式之一选择其中一个副本的数据,最后将每个分片的数据进行拼接,作为最终的读取结果返回给客户端。

配置集群

进入/etc/clickhouse-server目录

[root@scentos szc]# cd /etc/clickhouse-server
[root@scentos clickhouse-server]#

修改config.xml文件

[root@scentos clickhouse-server]# vim config.xml

<remote_servers>标签修改成如下内容:

     <remote_servers>
       <szc_cluster>
         <shard>
           <internal_replication>true</internal_replication>
           <replica>
             <host>scentos</host>
             <port>9000</port>
           </replica>
         </shard>
       </szc_cluster>
     </remote_servers>

<szc_cluster>为集群名称,<shard>为分片,<internal_replication>表示是否打开分片内部复制,<replica>为分片副本,分片内部可以配置多个副本,集群内部可以配置多个分片,但每个分片的副本数不用一样。
然后打开<macros>标签的注释,配置当前机器的分片id和副本id:

     <macros>
         <shard>01</shard>
         <replica>rep_01_1</replica>
     </macros>

最后重启ClickHouse:

[root@scentos clickhouse-server]# systemctl restart clickhouse-server

使用集群

首先通过副本合并树创建数据表:

create table st_order_mt on cluster szc_cluster (
id UInt32,
sku_id String,
total_amount Decimal(16,2),
create_time Datetime
) engine
=ReplicatedMergeTree('/clickhouse/tables/01/st_order_mt','rep_01_1')
partition by toYYYYMMDD(create_time)
primary key (id)
order by (id,sku_id);

szc_cluster为使用的集群名称,ReplicatedMergeTree('/clickhouse/tables/01/st_order_mt','rep_01_1')中的参数含义如下:

  1. /clickhouse/tables/01/st_order_mt/clickhouse/tables固定,01为建表的分片id,st_order_mt为表名;
  2. rep_01_1为建表的副本ID

在某个副本建表后,所有分片的所有副本都会拥有这张表。
执行结果如下图所示:
在这里插入图片描述
然后创建分布式表:

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

szc_cluster为集群名称,Distributed(szc_cluster,default, st_order_mt,hiveHash(sku_id)中参数含义如下:

  1. szc_cluster表示使用的集群名称;
  2. default表示使用的数据库名称;
  3. st_order_mt表示该分布式表控制的表名称;
  4. hiveHash(sku_id)表示分片方法,即通过计算sku_id的哈希值来确定数据所属的分片。

执行结果如下图所示:
在这里插入图片描述
然后我们可以通过分布式表st_order_mt_all2插入数据:

insert into st_order_mt_all values
           (201,'sku_001',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');

也可以通过分布式表st_order_mt_all2查询数据:
在这里插入图片描述
数据表和分布式表存在于集群中所有结点上,如果我们读写数据表,就只能读写结点所在分片的数据,不能读写跨分片结点的数据,因此集群模式下,我们必须通过分布式表进行全局的跨分片读写。

coder_szc
关注 关注
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
clickhouse学习笔记
09-14
clickhouse学习笔记学习clickhouse学习心得和笔记
ClickHouse入门学习笔记
11-12
clickhouse入门学习笔记,包括以下内容: 1.基础知识入门 2.数据类型介绍 3.目录结构介绍 4.表引擎介绍 5.常用SQL 6.副本机制 7.分片集群机制 8.执行计划介绍 9.建表优化规则 10.语法优化规则 11.查询优化规则 12....
ClickHouse基础知识(七):ClickHouse分片集群
zuodingquan666的博客
01-02 1914
副本虽然能够提高数据的可用性,降低丢失风险,但是每台服务器实际上必须容纳全量数据,对数据的没有解决。要解决数据水平切分的问题,需要引入分片的概念。通过分片把一份完整的数据进行切 分,不同的分片分布到不同的节点上,再通过 Distributed 表引擎把数据拼接起来一同使用。,有点类似于 MyCat 之于 MySql,成为一种中间 件,通过分布式逻辑表来写入、分发、路由来操作多台节点不同分片的分布式数据。
clickhouse四种集群方案
隐0士的博客
07-12 2689
我这里准备了四台机器,准备搭建3分片2副本集群(其中只有一台机器有副本,其他两台没有副本) 机器ip信息如下所示:用这个环境来分别部署以下集群来进行验证,至于集群的部署在本文不细说。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wzQ9yFIc-1657597822191)(upload\image-20220708174015397.png)]集群中只有一个分片,多个节点组成此分片的副本,每个节点保留全量的数据,通过在创建Distributed表不声明分片键实现全量写入读:
[SQL系列]从零开始学Clickhouse——集群
最新发布
u013379032的博客
04-29 1480
在上一篇中,我们通过Docker构建了一个简单的单点Clickhouse,但是如果要做大数据的处理的话,Clickhouse集群是必不可少的,今天我们先用Docker简单地搭建一个Clickhouse集群
ClickHouse-6(集群部署)
getBinary的博客
12-12 1914
集群部署副本配置分片集群 副本配置 在前面三台节点安装ClickHouse的基础上,可以配置数据副本,保障数据的高可用性 ClickHouse是没有主副节点的区分的,所以配置副本后,所有节点都可以读取/写入数据,节点之间通过zookeeper通信,发现互相之间数据有差异时会互相同步数据,保证数据一致 数据副本配置流程: cd /etc/clickhouse-server/config.d vim metrika.xml # 这里是个外部配置文件,名字不是指定的 在配置文件中指定三个节点的zookeepe
ClickHouse集群运维实践
lang830349821的博客
04-28 1590
ClickHouse集群运维策略包括监控方案,包括metric采集、报警策略、图形化报表。业界常用的监控方案一般是基于prometheus + grafana生态。由clickhouse-exporter (node-exporter) + prometheus + grafana组成的监控方案。 此外,ClickHouse还有多种分布式集群方案,例如:MergeTree + Distributed方案,它利用了Distributed表的特性+MergeTree表的特性,分布式表不存储数据,数据来自本地表
ClickHouse(十七)轮询写本地表之多分片动态数据源
写bug的小哥哥
06-22 2600
前言 笔者操作的clickhouse集群,配置是24台机、12分片、2副本的,在写入数据
ClickhouseClickhouse集群概念+可用性测试
大锅霍皮久的博客
06-23 3504
Clickhouse集群概念+可用性测试集群部署核心概念:集群分布式分布式集群Clickhouse分布式集群规划个人观点常用命令 集群部署 核心概念: 集群 简单的理解,集群就是把多台计算机(服务器)拼凑在一起,它们相互合作和组合,在物理上构成了一个整体。 分布式 分布式的概念是相对于单个任务而言的,一个大任务或者复杂任务,将其按照一定的逻辑拆分成多个小任务,每个小任务单独处理,然后合并每个小结果成一个大结果。下面是一个简单的分布式架构示例: 分布式集群 分布式集群兼以上三个特点而有之,能够处理大型任务
ClickHouse学习笔记总结
04-30
列式数据库ClickHouse
Clickhouse学习笔记
06-05
Clickhouse学习笔记
docker之hbase集群学习笔记
09-27
docker版hbase集群构建,从docker安装开始,再到docker中下载并运行hadoop镜像,之后下载并配置hbase。最后对整个流程做总结,遇到的问题,以及一些docker基础知识和hbase教程。
ClickHouse】-03.副本与分片-分片
Pushkin.的博客
09-24 1399
ClickHouse】-03.副本与分片-分片篇 数据分片 distributed原理解析
centos搭建clickhouse集群
qq_27856897的博客
03-03 3453
列式存储数据库 用于在线分析处理查询 OLAP SQL查询实时生成分析数据报告 参考:https://www.cnblogs.com/biehongli/p/14364802.html https://blog.csdn.net/github_39577257/article/details/103066747 集群节点信息 搭建环境 :系统环境:centos8.1 64位 192.168.10.68 JAVATEST-MIDDLE1 192.168.10.69 JAVATEST-MIDDLE2 192.1
clickhouse 集群搭建
The_OneRS的博客
10-27 4462
clickhouse 集群
clickhouse集群上增删改查
司马懿的西山居
11-24 3644
测试环境说明 这里测试的是 “1分片1副本” 集群环境,2台服务器( PC1 192.168.100.101 & PC2 192.168.100.102)。集群名字之前在 metrika.xml 里配置的是 ch_1s_1r 查看集群 在任意一台机上,使用 /usr/bin/clickhouse-client --host localhost --port 9000 连接本地服务器 使用 SELECT * FROM system.clusters 打印集群列表 建库 create database
clickhouse创建分布式数据库和分布式表
shy_snow的专栏
05-19 2415
前提:有多个clickhouse节点并在metrika.xml配置分片和副本。 -- 查询cluster集群名称 比如nx_clickhouse_4shards_1replicas select * from system.clusters; drop database test on cluster nx_clickhouse_4shards_1replicas ; create database test on cluster nx_clickhouse_4shards_1replicas ; -
clickhouse 集群异常排查处理总结
weixin_43849156的博客
03-13 1912
clickhouse
Clickhouse集群介绍
a13568hki的博客
09-01 1263
默认集群配置metrika.xml,可以通过config.xml修改 <?xml version="1.0"?> <yandex> <!-- /etc/clickhouse-server/config.xml 中配置的remote_servers的incl属性值,--> <clickhouse_remote_servers> <!-- 3分片1备份 --> <perftest_3shards_1repl
ClickHouse笔记
04-24
很好,我了解了。关于 ClickHouse笔记,您想知道什么内容呢? ClickHouse 是一个用于承载和分析海量数据的列式数据库管理系统,它支持SQL,并且运行速度非常快。因此,如果您正在考虑使用 ClickHouse 进行数据存储和分析,我可以向您介绍一些相关的笔记,例如如何模拟数据并使用 ClickHouse 进行性能测试,如何设置 ClickHouse 集群等等。请告诉我您最感兴趣的方面或任何其他问题,我将尽力为您提供帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

分类专栏

  • 安卓开发 92篇
  • Gradle 10篇
  • 大数据组件 57篇
  • JVM 18篇
  • Linux 20篇
  • CPU-GPU 18篇
  • ElasticSearch 11篇
  • 图算法 3篇
  • 版本管理 13篇
  • 数据库 31篇
  • docker 9篇
  • go 2篇
  • 代码重构 1篇
  • TensorFlow 2篇
  • python 8篇
  • 杂记 6篇
  • 求职 1篇
  • 考研 3篇

最新评论

  • LitmusRT使用笔记

    lanjianzz: 请问为什么我使用./rtspin -w -v -p 0 -q 2 10 1000 2 &创建第二个任务时会显示前一个任务已停止,使用cat /proc/litmus/stats指令也会使任务停止

  • win10启动hadoop时遇到的坑

    m0_69916613: 为啥我是第5个错误可以我改了还是不行呀

  • Doris学习笔记之监控

    SHarK1751007466: 请问,一开始监控没问题,第二天出现no data 是什么原因

  • git提交时报错error: Error building trees

    soSOnone: 天啊!!!一定要备份啊!!!

  • Doris学习笔记之数据表的创建

    源码怪: 建表语句PROPERTIES虽然说非必需,但是没有它就是建不了

大家在看

  • CLIP模型调用的一段代码及解释
  • CLIP的概念学习
  • C++数据结构实验四:排序 129
  • C语言大师之路:从零到王者/新手入门(2) 454
  • 设置超参数——argparser参数配置模块简介

最新文章

  • 解决mac运行scrcpy报错库找不到的问题
  • git学习笔记之用命令行解决冲突
  • Android开发之lint代码检测编写和使用方法
2024年1篇
2023年26篇
2022年47篇
2021年39篇
2020年55篇
2019年47篇
2018年67篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司辽源网站推广工具推荐达州阿里店铺托管黄南百度seo公司飞来峡网络营销价格绍兴seo网站推广公司泉州网页制作推荐周口网站推广系统价格营口推广网站哪家好南通模板推广价格宝鸡网站优化按天计费赤峰网站优化软件报价马鞍山网站优化按天计费推荐来宾至尊标王公司随州SEO按效果付费南平企业网站改版价格大鹏seo网站优化多少钱爱联网站优化软件多少钱延安企业网站改版公司铁岭网站推广推荐淄博网站搜索优化报价罗湖网络推广公司坪山网络广告推广价格商洛百度标王哪家好宣城营销网站价格松岗seo排名多少钱廊坊网站建设设计价格潍坊网站优化推广推荐淮南seo网站推广价格泸州网站搜索优化价格锦州网页设计哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化