介绍:
-
Distributed表引擎主要是用于分布式,自身不存储任何数据,数据都分散存储在某一个分片上,能够自动路由数据至集群中的各个节点,需要和其他数据表引擎一起协同工作
-
一张分布式表底层会对应多个分片数据表,由具体的分片表存储数据,分布式表与分片表是一对多的关系
配置实战:
1.首先我们需要配置分布式表信息
#进入配置目录
cd /etc/clickhouse-server
#编辑配置文件
sudo vim config.xml
<!-- 2shard 1replica -->
<cluster_2shards_1replicas>
<!-- shard1 -->
<shard>
<replica>
<host>139.10.123.456</host>
<port>9000</port>
</replica>
</shard>
<!-- shard2 -->
<shard>
<replica>
<host>139.10.123.789</host>
<port> 9000</port>
</replica>
</shard>
</cluster_2shards_1replicas>
<zookeeper>
<node >
<host>139.10.123.123</host>
<port>2181</port>
</node>
</zookeeper>
这里参数说明:
cluster_2shards_1replicas 是代表分布式表名
shard是指定两个分片信息 指定ip和端口
配置zookeeper 是为了副本之间数据的同步
2 建表实战
#【选一个节点】创建好本地表后,在1个节点创建,会在其他节点都存在
create table default.zwt_order on cluster cluster_2shards_1replicas
(id Int8,name String) engine =MergeTree order by id;
#【选一个节点】创建分布式表名 zwt_order_all,在1个节点创建,会在其他节点都存在
create table zwt_order_all on cluster cluster_2shards_1replicas (
id Int8,name String
)engine = Distributed(cluster_2shards_1replicas,default, zwt_order,hiveHash(id));
#分布式表插入
insert into zwt_order_all values(1,'ww'),(2,'ee'),(3,'rr'),(4,'tt');
#【任意节点查询-分布式,全部数据】
SELECT * from zwt_order_all
#【任意本地节点查询,部分数据】
SELECT * from zwt_order
3 数据分布
①如果向分布式表中新增数据,必须要配置分片键(最后一个参数),会将数据分发到各个本地表中
②如果在本地表中新增数据,可以在分布式表中查询到,在其他节点本地表中是查询不到的