目录

  • 简介
  • 集群写入流程
  • 集群读取流程
  • 3 分片2副本共6个节点集群配置
  • 配置三节点版本集群及副本
    • 集群及副本规划(2 个分片,只有第一个分片有副本)
    • 配置步骤

简介

副本虽然能够提高数据的可用性,降低丢失风险,但是每台服务器实际上必须容纳全量数据,对数据的横向扩容没有解决。
要解决数据水平切分的问题,需要引入分片的概念。通过分片把一份完整的数据进行切分,不同的分片分布到不同的节点上,再通过 Distributed 表引擎把数据拼接起来一同使用。
Distributed 表引擎本身不存储数据,是一种中间件,通过分布式逻辑表来写入、分发、路由来操作多台节点不同分片的分布式数据。

集群写入流程

3 分片 2 副本共 6 个节点

集群读取流程

3 分片 2 副本共 6 个节点

3 分片2副本共6个节点集群配置

配置的位置还是在之前的/etc/clickhouse-server/config.d/metrika.xml,内容如下

<yandex>
<clickhouse_remote_servers>
<gmall_cluster> <!-- 集群名称-->
<shard> <!--集群的第一个分片-->
<internal_replication>true</internal_replication>
<!--该分片的第一个副本--><replica> <host>hadoop201</host><port>9000</port></replica><!--该分片的第二个副本--><replica> <host>hadoop202</host><port>9000</port></replica>
</shard>
<shard> <!--集群的第二个分片--><internal_replication>true</internal_replication><replica> <!--该分片的第一个副本--><host>hadoop203</host><port>9000</port></replica><replica> <!--该分片的第二个副本--><host>hadoop204</host><port>9000</port></replica></shard><shard> <!--集群的第三个分片--><internal_replication>true</internal_replication><replica> <!--该分片的第一个副本--><host>hadoop205</host><port>9000</port></replica><replica> <!--该分片的第二个副本--><host>hadoop206</host><port>9000</port></replica></shard>
</gmall_cluster>
</clickhouse_remote_servers>
</yandex>

配置三节点版本集群及副本

集群及副本规划(2 个分片,只有第一个分片有副本)

配置步骤

(1)在 hadoop202 的/etc/clickhouse-server/config.d 目录下创建 metrika-shard.xml 文件

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

(2)将 hadoop202 的 metrika-shard.xml 同步到 203 和 204

sudo /home/atguigu/bin/xsync /etc/clickhouse-server/config.d/metrika-shard.xml

(3)修改 203 和 204 中 metrika-shard.xml 宏的配置
➢ 203

[atguigu@hadoop203 ~]$ sudo vim /etc/clickhouse-server/config.d/metrika-shard.xml


➢ 204

[atguigu@hadoop204 ~]$ sudo vim /etc/clickhouse-server/config.d/metrika-shard.xml


(4)在 hadoop202 上修改/etc/clickhouse-server/config.xm

(5)同步/etc/clickhouse-server/config.xml 到 203 和 204

[atguigu@hadoop202 ~]$ sudo /home/atguigu/bin/xsync /etc/clickhouse-server/config.xml

(6)重启三台服务器上的 ClickHouse 服务

[atguigu@hadoop202 clickhouse-server]$ sudo systemctl stop clickhouse-server
[atguigu@hadoop202 clickhouse-server]$ sudo systemctl start clickhouse-server
[atguigu@hadoop202 clickhouse-server]$ ps -ef |grep click

(7)在 hadoop202 上执行建表语句
➢ 会自动同步到 hadoop203 和 hadoop204 上
➢ 集群名字要和配置文件中的一致
➢ 分片和副本名称从配置文件的宏定义中获取

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_0105','{replica}')partition by toYYYYMMDD(create_time)primary key (id)order by (id,sku_id);

可以到 hadoop203 和 hadoop204 上查看表是否创建成功

(8)在 hadoop202 上创建 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()
(9)在 hadoop202 上插入测试数据

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');

(10) 通过查询分布式表和本地表观察输出结果
➢ 分布式表
SELECT * FROM st_order_mt_all;
➢ 本地表
select * from st_order_mt;
➢ 观察数据的分布

分片及Distributed 表引擎相关推荐

  1. ClickHouse表引擎详解

    ClickHouse 表引擎 ClickHouse 的表引擎是 ClickHouse 服务的核心,它们决定了 ClickHouse 的以下行为: 1.数据的存储方式和位置. 2.支持哪些查询操作以及如 ...

  2. Clickhouse外部储存表引擎(HDFS、MySQL、JDBC、Kafka、File)

    目录 1. HDFS表引擎 1.1 准备工作 1.2 HDFS表负责读写 1.3 HDFS表负责读, 不负责写 2. MySQL表引擎 2.1 表引擎的基本操作 2.2 表引擎配合物化视图 3. JD ...

  3. Clickhouse Distributed分布式表引擎的基本介绍和使用说明

    目录 1. 分布式的本地表 1.1 分布式的创建本地表 1.2 分布式的更改本地表表名 1.3 分布式的删除本地表 2. Distributed表 2.1 创建Distributed表 2.2 删除分 ...

  4. 大数据培训ClickHouse表引擎

    表引擎 表引擎(即表的类型)决定了: 1)数据的存储方式和位置,写到哪里以及从哪里读取数据 2)支持哪些查询以及如何支持. 3)并发数据访问. 4)索引的使用(如果存在). 5)是否可以执行多线程请求 ...

  5. ClickHouse 表引擎 ClickHouse性能调优

    https://clickhouse.com/ 引子 什么是"更快"? 顺序读/写吞吐量? 随机读/写延迟? 特定并行性和工作负载下的IOPS. 显然RAM可能比磁盘慢,例如单个c ...

  6. 04_ClickHouse表引擎概述、MergeTree系列引擎、Log系列引擎、集成引擎、特定功能的引擎(学习笔记)

    1.表引擎概述 1.1.MergeTree系列引擎 1.2.Log系列引擎 1.3.集成引擎 1.4.特定功能的引擎 1.表引擎概述 ClickHouse在建表时必须指定表引擎. 表引擎主要分为四大类 ...

  7. ClickHouse表引擎之Integration系列

    ​ Integration系统表引擎主要用于将外部数据导入到ClickHouse中,或者在ClickHouse中直接操作外部数据源. 1 Kafka 1.1 Kafka引擎 ​ 将Kafka Topi ...

  8. php空间 数据库设计,php进阶之数据库设计/ 选择合适的表引擎

    什么是表引擎 我们看到的表结构,它的本质是数据在硬盘中的存储.根据不同的特性,数据的存储方式不同.比如:对于每一条数据,在硬盘中它是怎么存储的,怎么压缩的,怎么建立索引和优化的,它的读取和写入是怎么实 ...

  9. Clickhouse MergeTree系列(Replacing、Summing等)表引擎使用说明

    目录 1. ReplacingMergeTree 1.1 使用场景 1.2 执行SQL 1.3 说明 2. SummingMergeTree 2.1 使用场景 2.2 执行SQL 2.3 说明 2.4 ...

最新文章

  1. 中大博士分析ICLR 2022投稿趋势:Transformer激增,ViT首进榜单前50,元学习大跌
  2. SAP MM 预制发票相关的Function Modules
  3. RuoYi-Vue————权限管理
  4. 万网 php session,Session
  5. vscode for mac怎样关闭自动更新
  6. 建筑师 第一类斯特林数
  7. swagger2如何测试单个文件或者多文件上传
  8. PHP导出成word文档
  9. 用XSLT和XML改进Struts
  10. Atitit easyui翻页组件与vue的集成解决方案attilax总结
  11. mess组网 中继_Mesh路由和无线中继的差距在哪里?谁才是更好的选择?
  12. SQLyog 下载地址
  13. c语言贪吃蛇设计意义,C语言贪吃蛇设计理念.pdf
  14. 无线打印机服务器安装教程,网络打印服务器怎么安装和使用?
  15. Ubuntu系统下python编程入门
  16. 拼音转汉字算法(隐马尔科夫、维特比算法)
  17. 图片还原去遮挡_如何把人像照片上的遮盖物去除看到原来人像?
  18. 用Ubuntu20.04开热点
  19. Pruning Filters for Efficient ConvNets详解
  20. 【下载网页上的视频】IDM显示无法将下载行为传输到IDM

热门文章

  1. 卫星地图多长时间更新一次啊?
  2. 一个机器能装两个mysql吗_一个机器安装多个mysql
  3. ENVI教程:InSAR技术,基线估算
  4. 人脸方向论文阅读(二)——Deep Face Representations for Differential Morphing Attack Detection
  5. Go Gin Example
  6. 【Python实战】爬取豆瓣排行榜电影数据(含GUI界面版)
  7. 高性能、低功耗4口高速USB2.0HUB控制器芯片DPU1.1S
  8. flashfxpl连接服务器失败,serv-u列表错误,套接字错误
  9. ckeditor5+vue2 实现自定义文件上传插件
  10. DP2232H国产替代FT2232H_USB2.0转UART/FIFO芯片