clickhouse集群小试

clickhouse集群

设备需求

  • clickhouse集群
    • centos7/ubuntu
    • 6台(3 shard,2 replica)
  • zookeeper集群
    • centos7/ubuntu
    • 3台

环境安装

zookeeper集群搭建

java准备
  • 下载jdk,并配置环境变量
zookeeper准备
  • 下载zookeeper
  • 配置zookeeper
    • 建立zookeeper数据路径,实验所使用的配置路径是 /data/apache/zookeeper/zkdata/
    • 在数据路径下,创建myid文件,并写入本机的zookeeper id,比如实验所以用的三台设备的id分别为1、2、3,在三台设备的myid中分别写入1、2、3,然后在配置文件中对应即可
    • 修改配置文件
      • $ZOOKEEPER_HOME/zoo.cfg
        server.${设备1的myid}=${设备1的IP}:2888:3888
        server.${设备2的myid}=${设备2的IP}:2888:3888
        ......
        server.${设备n的myid}=${设备n的IP}:2888:3888
        
        • 注意,对应设备的IP的server.${myid}中的myid要对应到该设备的myid文件中的内容
  • 在每台设备上分别启动zookeeper即可,另外请注意防火墙

clickhouse集群搭建

单机clickhouse的安装
  • 官方说明文档clickhouse安装
  • 离线安装
    • 下载离线安装包
      • centos 离线安装包地址离线安装包地址
      • ubuntu离线安装包地址离线安装包地址
      • 下载内容
        • clickhouse-common-static-${版本信息}
        • clickhouse-server-${版本信息}
        • clickhouse-client-${版本信息}
    • 安装顺序
      • clickhouse-common-static
      • clickhouse-server
      • clickhouse-client
  • 启动clickhouse-server
    systemctl start clickhouse-server
  • 客户端连接
    # 此命令可以用于远程连接其他设备上的clickhouse,不过需要做些配置
    clickhouse-client --host=${host}
    
集群clickhouse的搭建
  • 在各台设备上分别安装单机的clickhouse
  • 配置每台设备上的配置文件,所有设备的配置保持一致即可
    • 文件配置路径 /etc/clickhouse-server/config.xml
      • 文件配置修改后,clickhouse会动态加载配置内容
    • 文件需要修改或者添加的内容
      • 分片、副本配置
        <remote_servers incl="clickhouse_remote_servers" >
            <perftest_3shards>
                <shard>
                    <replica>
                        <host>node1</host>
                        <port>9000</port>
                    </replica>
                    <replica>
                        <host>node2</host>
                        <port>9000</port>
                    </replica>
                </shard>
                <shard>
                    <replica>
                        <host>node3</host>
                        <port>9000</port>
                    </replica>
                    <replica>
                        <host>node4</host>
                        <port>9000</port>
                    </replica>
                </shard>
                <shard>
                    <replica>
                        <host>node5</host>
                        <port>9000</port>
                    </replica>
                    <replica>
                        <host>node6</host>
                        <port>9000</port>
                    </replica>
                </shard>
                <shard>
                    <replica>
                        <host>node7</host>
                        <port>9000</port>
                    </replica>
                    <replica>
                        <host>node8</host>
                        <port>9000</port>
                    </replica>
                </shard>
            </perftest_3shards>
        </remote_servers>
        
        • preftest_3shards是集群的名字,这里可以自行定义,后面建立分布式表时需要用到
      • zookeeper配置
            <zookeeper incl="zookeeper-servers" optional="true" >
                <node>
                    <host>10.80.0.150</host>
                    <port>2181</port>
                </node>
                <node>
                    <host>10.80.0.151</host>
                    <port>2181</port>
                </node>
                <node>
                    <host>10.80.0.152</host>
                    <port>2181</port>
                </node>
            </zookeeper>
        
      • 分片、副本数量配置
        <macros incl="macros" optional="true" >
            <shard>3</shard>
            <replica>2</replica>
        </macros>
        
      • 外部访问权限开放配置
        #将这条配置的数据放开
        <listen_host>::</listen_host>
        
        • 此配置是用来放开集群内部其他设备访问本机clickhouse的权限的
        • 当然还是要注意防火墙,这里都是用的9000端口
建表
建物理表
  • 每台设备上都要建好这个表
  • test表的建表语句
    [root@node1 clickhouse-server]# clickhouse-client
    ClickHouse client version 20.4.4.18 (official build).
    Connecting to localhost:9000 as user default.
    Connected to ClickHouse server version 20.4.4 revision 54434.
    
    node1 :) create table test(id UInt32, rank UInt32, message String, newcolumn String) engine=MergeTree() partition by rank order by rank;
    
    • 注意Engine后面的MergeTree,是对应表的引擎,这玩意儿是大小写敏感的
    • MergeTree要求必须写够3个变量,包括我语句中给的partition by、order by,另外一个没看,应该是有默认值的
建分布式表
  • 建设分布式表的前提是建好物理表
  • 建表语句
    create table test_distribute as test engine = Distributed(perftest_3shards, default, test, rand());
    
    • 引擎Distributed后面的每个参数的含义
      • perftest_3shards,集群名称,就是clickhouse配置文件中的那个配置,详情见上文
      • default,是物理表所在的数据库
      • test,是物理表的名称
      • rand(),是分片的key
测试
  • 直接向分布式表中插入数据即可,注意字符串用单引号
    insert into table test_distribute values (1, 1, 'A', 'A')
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值