clickhou之distributed配置及使⽤
概述
不同于replicated模式,distributed有shard的概念,即⼀张表的完整数据并不存放在⼀个物理节点上,⽽是分布在多个不同的物理节点。
Distributed引擎本⾝不存储数据,不过它⽀持在多台rver上进⾏分布式的,并⾏的查询。⽐如⼀张distributed表有3个shard,分布在3个不
同的rver上⾯,当查询请求发到其中⼀台rver(rver1)的时候,该rver会同时向其他两台rver(rver2和rver3)发送数据请
求,另外两台rver处理完数据以后会将结果返回rver1,在rver1再进⾏处理后将最终结果返回客户端。
配置
clickhou有⼏种写配置的⽅式,⼀种是直接在/etc/clickhou-rver/⾥⾯写,另⼀种是⼿动创建/etc/⽂件,这样
原中带有incl属性的element会被相关联的value替换掉。还有⼀种配置⽅式是在element中加"from_zk="/path/to/node""属性,将
xml配置存放在zookeeper中。zookeeper中的xml会成为中element的⼦内容。
下⾯采⽤的是在默认配置⽂件/etc/clickhou-rver/进⾏配置的⽅式。
1.同replicated模式,zookeeper是必须配置的
2.配置remote-rvers列表,
标签说明:
-
的时被引⽤
-
-
-
replica中,然后各个replica之间通过zookeeper⾃动同步数据。其余情况设置成fal,数据会往所有replica中写,这种情况下replica之间的数
据没有进⾏⼀致性校验,假以时⽇不同replica之间的数据可能会有微⼩的差异。默认被设置为fal
-
置
定义distributed表
1.⾸先在不同的分⽚rver上创建本地表,⽰例:
er_shop_local(shop_idUInt64,pinString,scoreFloat64,xString,ageString,marital_statusString,regionString,pa
2.然后在根据需求在rver上创建distributed表(⽐如有3台分⽚rver,只在⼀台rver上创建了distributed表,则只有这台rver可以提供
该distributed表的服务,如果所有rver都创建了distributed表,那么3台都可以提供服务)。
Distributed引擎创建template:Distributed(cluster,dateba,local_table[,sharding_key]),
其中:
-cluster需要写成在config⾥⾃定义的cluster名称
-databa是分⽚数据库的名称
-local_table是分⽚本地表的名称
-最后⼀项sharding_key是选填的,可以是⼀个表达式,例如rand(),也可以是某列如ur_id,不过该列必须是integer类型,通过对该具体的
值进⾏取余进⾏分⽚,如果担⼼这样没法均匀的进⾏分⽚,也可以加上hash函数,如intHash64(ur_id)
⽰例:
CREATETABLEIFNOTEXISTScustomer_shop_allAScustomer_shop_localENGINE=Distributed(test_2shard_2replica,default,customer_shop_local,rand())
本文发布于:2022-12-29 00:38:32,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/50043.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |