Distributed表引擎是分布式表的代名词,它自身不存储任何数据,而是作为数据分片的透明
代理,能够自动路由数据至集群中的各个节点,所以Distributed表引擎需要和其他数据表引擎一
起协同工作
定义
ENGINE = Distributed(cluster, database, table [,sharding_key])
其中,各个参数的含义分别如下:
·cluster:集群名称,与集群配置中的自定义名称相对应。在对分布式表执行写入和查询的
过程中,它会使用集群的配置信息来找到相应的host节点。
·database和table:分别对应数据库和表的名称,分布式表使用这组配置映射到本地表。
·sharding_key:分片键,选填参数。在数据写入的过程中,分布式表会依据分片键的规
则,将数据分布到各个host节点的本地表。
集群搭建
1、允许外网访问
修改/etc/clickhouse-server/config.xml,将<listen_host>0.0.0.0</listen_host>两边的注释去掉
<!-- Listen specified host. use :: (wildcard IPv6 address), if you want to accept connections both with IPv4 and IPv6 from everywhere. -->
<!-- <listen_host>::</listen_host> -->
<!-- Same for hosts with disabled ipv6: -->
<listen_host>0.0.0.0</listen_host>
2、修改用户名、密码
修改/etc/clickhouse-server/users,xml,默认是用户名是default,密码可以是明文或者加密的
3、搭建集群
在/etc/clickhouse-server目录下,创建config.d的文件夹,在此文件夹中创建metrika.xml文件夹,然后只需要根据现场环境修改metrika.xml文件,metrika.xml文件内容如下
<yandex>
<clickhouse_remote_servers>
<sharding_simple><!-- 集群名称 自定义名称-->
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>vm01</host>
<port>9000</port>
</replica>
</shard>
<shard>
<replica>
<internal_replication>true</internal_replication>
<host>vm02</host>
<port>9000</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>vm03</host>
<port>9000</port>
</replica>
</shard>
</sharding_simple>
</clickhouse_remote_servers>
<!--zookeeper相关配置,不做高可用可以不写-->
<zookeeper-servers>
<node index="1">
<host>vm01</host>
<port>2181</port>
</node>
<node index="2">
<host>vm02</host>
<port>2181</port>
</node>
<node index="3">
<host>vm03</host>
<port>2181</port>
</node>
</zookeeper-servers>
<!--三台机器不要一样-->
<macros>
<replica>clickhouse01</replica>
</macros>
<networks>
<ip>::/0</ip>
</networks>
<clickhouse_compression>
<case>
<min_part_size>10000000000</min_part_size>
<min_part_size_ratio>0.01</min_part_size_ratio>
<method>lz4</method>
</case>
</clickhouse_compression>
</yandex>
在/etc/clickhouse-server/config.xml文件中添加一行
<include_from>/etc/clickhouse-server/config.d/metrika.xml</include_from>
至此,名叫sharding_simple的集群就搭建好了,可以通过命令查看集群
SELECT cluster, host_name FROM system.clusters
然后就可以通过distributed表引擎创建分布式表,然后插入数据了