分片及Distributed 表引擎
目录
- 简介
- 集群写入流程
- 集群读取流程
- 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 表引擎相关推荐
- ClickHouse表引擎详解
ClickHouse 表引擎 ClickHouse 的表引擎是 ClickHouse 服务的核心,它们决定了 ClickHouse 的以下行为: 1.数据的存储方式和位置. 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 ...
- Clickhouse Distributed分布式表引擎的基本介绍和使用说明
目录 1. 分布式的本地表 1.1 分布式的创建本地表 1.2 分布式的更改本地表表名 1.3 分布式的删除本地表 2. Distributed表 2.1 创建Distributed表 2.2 删除分 ...
- 大数据培训ClickHouse表引擎
表引擎 表引擎(即表的类型)决定了: 1)数据的存储方式和位置,写到哪里以及从哪里读取数据 2)支持哪些查询以及如何支持. 3)并发数据访问. 4)索引的使用(如果存在). 5)是否可以执行多线程请求 ...
- ClickHouse 表引擎 ClickHouse性能调优
https://clickhouse.com/ 引子 什么是"更快"? 顺序读/写吞吐量? 随机读/写延迟? 特定并行性和工作负载下的IOPS. 显然RAM可能比磁盘慢,例如单个c ...
- 04_ClickHouse表引擎概述、MergeTree系列引擎、Log系列引擎、集成引擎、特定功能的引擎(学习笔记)
1.表引擎概述 1.1.MergeTree系列引擎 1.2.Log系列引擎 1.3.集成引擎 1.4.特定功能的引擎 1.表引擎概述 ClickHouse在建表时必须指定表引擎. 表引擎主要分为四大类 ...
- ClickHouse表引擎之Integration系列
Integration系统表引擎主要用于将外部数据导入到ClickHouse中,或者在ClickHouse中直接操作外部数据源. 1 Kafka 1.1 Kafka引擎 将Kafka Topi ...
- php空间 数据库设计,php进阶之数据库设计/ 选择合适的表引擎
什么是表引擎 我们看到的表结构,它的本质是数据在硬盘中的存储.根据不同的特性,数据的存储方式不同.比如:对于每一条数据,在硬盘中它是怎么存储的,怎么压缩的,怎么建立索引和优化的,它的读取和写入是怎么实 ...
- Clickhouse MergeTree系列(Replacing、Summing等)表引擎使用说明
目录 1. ReplacingMergeTree 1.1 使用场景 1.2 执行SQL 1.3 说明 2. SummingMergeTree 2.1 使用场景 2.2 执行SQL 2.3 说明 2.4 ...
最新文章
- 中大博士分析ICLR 2022投稿趋势:Transformer激增,ViT首进榜单前50,元学习大跌
- SAP MM 预制发票相关的Function Modules
- RuoYi-Vue————权限管理
- 万网 php session,Session
- vscode for mac怎样关闭自动更新
- 建筑师 第一类斯特林数
- swagger2如何测试单个文件或者多文件上传
- PHP导出成word文档
- 用XSLT和XML改进Struts
- Atitit easyui翻页组件与vue的集成解决方案attilax总结
- mess组网 中继_Mesh路由和无线中继的差距在哪里?谁才是更好的选择?
- SQLyog 下载地址
- c语言贪吃蛇设计意义,C语言贪吃蛇设计理念.pdf
- 无线打印机服务器安装教程,网络打印服务器怎么安装和使用?
- Ubuntu系统下python编程入门
- 拼音转汉字算法(隐马尔科夫、维特比算法)
- 图片还原去遮挡_如何把人像照片上的遮盖物去除看到原来人像?
- 用Ubuntu20.04开热点
- Pruning Filters for Efficient ConvNets详解
- 【下载网页上的视频】IDM显示无法将下载行为传输到IDM
热门文章
- 卫星地图多长时间更新一次啊?
- 一个机器能装两个mysql吗_一个机器安装多个mysql
- ENVI教程:InSAR技术,基线估算
- 人脸方向论文阅读(二)——Deep Face Representations for Differential Morphing Attack Detection
- Go Gin Example
- 【Python实战】爬取豆瓣排行榜电影数据(含GUI界面版)
- 高性能、低功耗4口高速USB2.0HUB控制器芯片DPU1.1S
- flashfxpl连接服务器失败,serv-u列表错误,套接字错误
- ckeditor5+vue2 实现自定义文件上传插件
- DP2232H国产替代FT2232H_USB2.0转UART/FIFO芯片