clickhouse可以单机部署,创建本地表,这个时候不需要zookeeper协助。如果要创建分布式表就需要安装zookeeper集群。zookeeper下载地址 https://zookeeper.apache.org/releases.html 下载版本在3.6.1以上。解压后要进行设置,集群配置的话,默认配置文件没有那一段如下:
server.1=work228:2182:3182
server.2=work229:2182:3182
server.3=work230:2182:3182
这段是配置主机IP地址和短号,server后面的数字是指定那台主机。每台主机需要新建myid文件,里面需要输入IP地址所对应的数字。
接下来安装clickhouse,安装方式直接使用yum install
sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/clickhouse.repo
sudo yum install clickhouse-server clickhouse-client
sudo /etc/init.d/clickhouse-server start
在启动前,我们要进行集群配置。默认安装好的配置在/etc/clickhouse-server/,users.xml包含了访问控制,比如允许那些用户可以访问,那些IP地址可访问。我们更多需要对config.xml里面进行调整,比如数据和日志文件等等的路径。
<zookeeper incl="zookeeper-servers" optional="true" /> 如果有incl属性,节点内的内容不会生效,默认会在metrika.xml查找,默认路径是/etc/metrika.xml,如果想改变路径需要添加如下属性
<include_from>/etc/clickhouse-server/metrika.xml</include_from>
在metrika.xml建立3分配1副本的配置,这个需要三台机器。(这个分片数和副本数有关)
<!-- 集群配置 -->
<yandex>
<clickhouse_remote_servers>
<!-- config.xml里面的名称和节点名称要一致 -->
<ckcluster_3shards_1replicas>
<shard>
<!-- 自动复制稳定性好 -->
<internal_replication>true</internal_replication>
<replica>
<host>work228</host>
<port>9000</port>
</replica>
</shard>
<shard>
<replica>
<internal_replication>true</internal_replication>
<host>work229</host>
<port>9000</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>work230</host>
<port>9000</port>
</replica>
</shard>
</ckcluster_3shards_1replicas>
</clickhouse_remote_servers>
<zookeeper>
<node index="1">
<host>work228</host>
<port>2181</port>
</node>
<node index="2">
<host>work229</host>
<port>2181</port>
</node>
<node index="3">
<host>dwork230</host>
<port>2181</port>
</node>
</zookeeper>
<macros>
<!-- 这里是设置分片副本变量在创建表语句中配合使用 {shard} {replica} -->
<shard></shard>
<replica></replica>
</macros>
<!-- 数据压缩算法 -->
<compression incl="clickhouse_compression">
<!- - Set of variants. Checked in order. Last matching case wins. If nothing matches, lz4 will be used. - ->
<case>
<!- - Conditions. All must be satisfied. Some conditions may be omitted. - ->
<min_part_size>10000000000</min_part_size> <!- - Min part size in bytes. - ->
<min_part_size_ratio>0.01</min_part_size_ratio> <!- - Min size of part relative to whole table size. - ->
<!- - What compression method to use. - ->
<method>zstd</method>
</case>
</compression>
</yandex>
配置文件内容修改后,如果没有错误会自动加载生效。
大家一定要去理解shard和replica,distrbute查询规则是会去shard里面取一个副本查询后进行合并得出结果,配置副本一定要注意不然结果并集会有重复数据。
建议大家把/var/lib下面的配置信息放到其它盘,方便迁移。
最后启动服务
systemctl start clickhouse-server
部署过程遇到的问题:
1、code=exited, status=232/ADDRESS_FAMILIES
出现问题第一时间查看日志,去看日志没有,后来再github有人说账户问题,后面我就把日志文件夹chown clickhouse:clickhouse -R log/,重启有日志,之后的问题都是看日志。这个问题是因为安装后把数据文件什么的都迁移了,所属用户组都变了,把clickhouse下面的所有文件夹都成 chown -R clickhouse:clickhouse就行了。
2、Include not found: networks
这个地方原因就是一个是IP地址问题,默认是IPV6的写法。IPV4应该用0.0.0.0。我出现是因为没有在user.xml上加include from.以为在config.xml加了就可以了。