ClickHouse的Distributed表引擎

发布于:2023-01-12 ⋅ 阅读:(773) ⋅ 点赞:(0)

        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表引擎创建分布式表,然后插入数据了


网站公告

今日签到

点亮在社区的每一天
去签到