使用clickhouse搭建2分片2副本的4节点集群

0x1 环境说明

  1. 本人使用的环境debian9(ubuntu18类似),clickhouse的安装遵循官网的做法,本文不赘述。
  2. clickhouse的版本20.0.7.*以上
  3. zookeeper版本3.4.9及以上(clickhouse文档要求)

0x2 环境配置

搭建分布式集群需要zookeeper,zookeeper的安装请自行解决

1. clickhouse中zookeeper配置

  1. /etc/clickhouse-server/config.xml中确保存在这样的配置,默认情况下,装完clickhouse就已经有
<zookeeper incl="zookeeper-servers" optional="true" />
  1. 在/etc/clickhouse-server同级目录下创建一个文件metrika.xml,并在config.xml中引入如下配置
<include_from>/etc/clickhouse-server/metrika.xml</include_from>

通过include_from,引入扩展的文件
在metrika.xml中引入如下zookeeper-server的节点配置

<yandex>
    <zookeeper-servers>
        <node index="1">
            <host>host-1.xx.com</host>
            <port>2281</port>
        </node>
        <node index="2">
            <host>host-2.xx.com</host>
            <port>2281</port>
        </node>
        <node index="3">
            <host>host-3.xx.com</host>
            <port>2281</port>
        </node>
    </zookeeper-servers>
</yandex>

以上配置在集群中的节点需要保持一致。至此我们完成zookeeper的配置

2. clickhouse中macros的配置

macros参数,用于创建副本表必须的配置,可以用于区别不同的副本。
在metrika.xml我们新增macros节点

<macros>
    <shard>1</shard>
    <node>node-1</node>
</macros>

macros中的标签key可以自定义为其他,不要按照上面的shard和node节点来。确定好key后,集群不同的节点需要保证key对应的value需要不同
至此完成macros参数的配置。

3. 配置集群的模式

本文搭建的是2分片2副本的4节点集群

  1. 在config.xml中的<remote_servers incl=“clickhouse_remote_servers” >节点引入如下配置
<cluster_2shard_5_6_2replicas_5_6>
    <shard>
        <weight>1</weight>
        <internal_replication>true</internal_replication>
        <replica>
            <host>host-1.xx.com</host>
            <port>9000</port>
            <user>xx</user>
            <password>xx</password>
        </replica>
        <replica>
            <host>host-3.xx.com</host>
            <port>9000</port>
            <user>xx</user>
            <password>xx</password>
        </replica>
    </shard>
    <shard>
        <weight>1</weight>
        <internal_replication>true</internal_replication>
        <replica>
            <host>host-2.xx.com</host>
            <port>9000</port>
            <user>xx</user>
            <password>xx</password>
        </replica>
        <replica>
            <host>host-4.xx.com</host>
            <port>9000</port>
            <user>xx</user>
            <password>xx</password>
        </replica>
    </shard>
</cluster_2shard_5_6_2replicas_5_6>

先定义了分片(shard),在每个分片下定义该分片的副本集。上面定义host-1/2俩个分片,1和2对应的副本集分别为3/4
上面也可以定义到metrika.xml中,或者通过include-from引入的文件中的clickhouse_remote_servers节点下。
至此我们完成副本级的配置

0x03 创建多分片多副本级的表

CREATE TABLE ods_data.single_point_log on cluster cluster_2shard_5_6_2replicas_5_6
(
    `um_device_id` String,
    `app_id` Int8,
    `app_platform` String,
    `app_version` String,
    `app_channel` String,
    `device_id` String,
    `event_ts` Int64,
    `session_id` Nullable(String),
    `event_type` String,
    `user_id` Int64,
    `ip` Nullable(String),
    `params` String,
    `side` Nullable(String),
    `event_time` Nullable(String),
    `event_date` String,
    `log_time` Nullable(String),
    `sink_date` Nullable(String),
    `first_login_time` Nullable(String),
    `comprehensive_level` Nullable(String),
    `vocabulary_level` Nullable(String),
    `grammar_level` Nullable(String),
    `listening_level` Nullable(String),
    `oral_level` Nullable(String),
    `reading_level` Nullable(String)
)
ENGINE = ReplicatedReplacingMergeTree('/clickhouse/ods_data/tables/single_point_log','single_point_log-{node}',event_ts)
PARTITION BY event_date
ORDER BY (event_type,
 app_platform,
 app_version,
 app_channel,
 user_id,
 event_ts,
 params)
SETTINGS index_granularity = 8192;

上面有俩个注意点

  1. 在create table table_name 后需要跟上 on cluster 集群的模式即0x02中定义模式名
  2. ReplicatedReplacingMergeTree需要跟上一些参数,从左右往右分别的解释
第一个参数:zoo_path — The path to the table in ZooKeeper.
第二个参数:replica_name — The replica name in ZooKeeper.里面的{node}就是macros中定义的参数
第三个参数:other_parameters — Parameters of an engine which is used for creating the replicated version, for example, version in ReplacingMergeTree.  

至此我们完成2分片2副本级的创建

0x04 登陆clickhouse

 clickhouse-client -u xxx --password xxx -m

-m 表示支持sql换行

0x05 clickhouse客户端工具

有3大类可以选择

  1. 使用自带的cli工具
  2. 使用tabixd,但是需要config.xml中打开http_server_default_response节点,默认应该是注释掉的
  3. 使用第三方工具,例如dbeave,superset-sqllab
    日常查询可以使用第三方工具,方便查询和保存SQL,但是对于重查询和需要分析性能的建议还是使用cli。tabixd可以将查询的结果图表化,对于分析人员来说有一定帮助。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值