clickhouse 搭建 单机 / 集群

安装 clickhouse

首先,访问官网 https://clickhouse.com/#quick-start 根据你主机的类型,下载clickhouse

我这里是centos8,因此采用如下方式
在这里插入图片描述

sudo yum install yum-utils -y 
sudo rpm --import https://repo.clickhouse.com/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.clickhouse.com/rpm/clickhouse.repo
sudo yum install clickhouse-server clickhouse-client
sudo /etc/init.d/clickhouse-server start -y
clickhouse-client

修改数据存储目录

查看 clickhouse-server 的配置文件,默认的数据存储目录为 /var/lib/clickhouse 。可以修改为你自己的目录,但是必须保证目录的磁盘空间足够大
在这里插入图片描述

查看运行状态

有两种方式可以查看运行状态,一种是clickhouse自带的方法,还有一种是systemctl工具

  1. /etc/init.d/clickhouse-server status
    clickhouse 自带了查看启动状态的命令。对于其它命令,可以使用 help 参数进行查看。如果正在运行,会打印 running 和 pid
    在这里插入图片描述
  2. systemctl status clickhouse-server
    使用系统服务命令,可以查看 clickhouse-server 服务是否正在运行。正在运行的话,状态为 active(running);如果处于停止状态,则是 inactive(dead)。此外还会打印主进程PID,占用内存,启动参数等信息
    在这里插入图片描述
    在这里插入图片描述

单机模式

  • 启动 /etc/init.d/clickhouse-server start
  • 停止 /etc/init.d/clickhouse-server stop
  • 重启 /etc/init.d/clickhouse-server restart
  • client 连接 server /usr/bin/clickhouse-client --host localhost --port 9000
    在这里插入图片描述

集群模式

搭建zookeeper

由于服务器资源有限,zookeeper只需要部署一台机即可,并不需要做集群

下载并解压 zookeeper(https://downloads.apache.org/zookeeper/current/),然后进入bin目录,执行如下命令

# 启动zookeeper
sh zkServer.sh start ../conf/zoo_sample.cfg
# 查看zookeeper的运行状态
./zkServer.sh status ../conf/zoo_sample.cfg
# 查看zookeeper线程
jps

可以看到,启动的模式为 standalone,即单例模式
在这里插入图片描述

搭建clickhouse

网上搜到常见的做法是新建/etc/metrika.xml 文件,添加如下内容(所有的IP改为你集群中的IP)。除了macros节点需要为每台主机分别进行配置外,其它都是一样的。Zookeeper 可以单独部署,也可以与 clickhouse 部在同一台服务器上

所需机器个数 shard * (replica + 1)分片个数 * (副本个数 + 1)

  1. 1zookeeper-3shard-0replica(需要3台机)/etc/clickhouse-server/metrika/metrika_1z3s0r.xml
<yandex>
  <!-- 集群配置 -->
  <clickhouse_remote_servers>
    <!-- 集群名称 -->
    <ch_3s_0r>
      <!-- 数据分片1 -->
      <shard>
        <!-- 数据分片的数据权重 -->
        <weight>1</weight>
        <!-- 是否启用内部复制。true 代表写入数据时选择第一个健康的副本进行写入,其余副本以该表本身进行复制,保证复制表的一致性。false(默认) 代表将数据直接写入所有副本,因为没有检查复制表的一致性,随着时间的推移,它们将包含略微不同的数据。 -->
        <internal_replication>true</internal_replication>
        <replica>
          <!-- 数据分片远程服务地址(支持IPv6)或域名 -->
          <host>192.168.100.101</host>
          <port>9000</port>
          <user>default</user>
          <password></password>
        </replica>
      </shard>
      <!-- 数据分片2 -->
      <shard>
        <weight>1</weight>
        <internal_replication>true</internal_replication>
        <replica>
          <host>192.168.100.102</host>
          <port>9000</port>
          <user>default</user>
          <password></password>
        </replica>
      </shard>
      <!-- 数据分片3 -->
      <shard>
        <weight>1</weight>
        <internal_replication>true</internal_replication>
        <replica>
          <host>192.168.100.103</host>
          <port>9000</port>
          <user>default</user>
          <password></password>
        </replica>
      </shard>
    </ch_3s_0r>
  </clickhouse_remote_servers>
  
  <!-- 本节点副本名称 (这里只配置单副本)-->
  <macros>
    <!-- 集群名称 -->
    <layer>ch_layer</layer>
    <!-- 分片的编号 -->
    <shard>01</shard>
    <!-- 副本的名称,通常与主机名相同 -->
    <replica>192.168.100.101</replica>
  </macros>
  
  <!-- 监听网络 -->
  <networks>
    <!-- ::/0代表监听所有ip -->
    <ip>::/0</ip>
  </networks>
  
  <!-- zoookeeper的配置(单机或集群均可)-->
  <zookeeper-servers>
    <node index="1">
      <host>192.168.100.101</host>
      <port>2181</port>
    </node>
  </zookeeper-servers>
  
  <!-- 数据压缩算法 -->
  <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>
  1. 1zookeepers-1shards-1replicas(需要2台机)/etc/clickhouse-server/metrika/metrika_1z1s1r.xml
<yandex>
  <!-- 集群配置 -->
  <clickhouse_remote_servers>
    <!-- 集群名称 -->
    <ch_1s_1r>
      <!-- 数据分片1 -->
      <shard>
        <!-- 数据分片的数据权重 -->
        <weight>1</weight>
        <!-- 是否启用内部复制。true 代表写入数据时选择第一个健康的副本进行写入,其余副本以该表本身进行复制,保证复制表的一致性。false(默认) 代表将数据直接写入所有副本,因为没有检查复制表的一致性,随着时间的推移,它们将包含略微不同的数据。 -->
        <internal_replication>true</internal_replication>
        <replica>
          <!-- 数据分片远程服务地址(支持IPv6)或域名 -->
          <host>192.168.100.101</host>
          <port>9000</port>
          <user>default</user>
          <password></password>
        </replica>
        <replica>
          <host>192.168.100.102</host>
          <port>9000</port>
          <user>default</user>
          <password></password>
        </replica>
      </shard>
    </ch_1s_1r>
  </clickhouse_remote_servers>
  
  <!-- 本节点副本名称 (这里只配置单副本)-->
  <macros>
    <!-- 集群名称 -->
    <layer>ch_layer</layer>
    <!-- 分片的编号 -->
    <shard>01</shard>
    <!-- 副本的名称,通常与主机名相同 -->
    <replica>192.168.100.101</replica>
  </macros>
  
  <!-- 监听网络 -->
  <networks>
    <!-- ::/0代表监听所有ip -->
    <ip>::/0</ip>
  </networks>
  
  <!-- zoookeeper的配置(单机或集群均可)-->
  <zookeeper-servers>
    <node index="1">
      <host>192.168.100.101</host>
      <port>2181</port>
    </node>
  </zookeeper-servers>
  
  <!-- 数据压缩算法 -->
  <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>

如果zookeeper用的是集群,则需要将 zookeeper-servers节点改为

<zookeeper-servers>
    <node index="1">
      <host>192.168.100.101</host>
      <port>2181</port>
    </node>
    <node index="2">
      <host>192.168.100.101</host>
      <port>2181</port>
    </node>
    <node index="3">
      <host>192.168.100.101</host>
      <port>2181</port>
    </node>
  </zookeeper-servers>

然而,仅创建 /etc/metrika.xml 文件并不能使集群生效,我们查看 /etc/clickhouse-server/config.xml

  • include_from 配置文件的默认位置在 /etc/metrika.xml,可以设置此参数来改变它的位置
  • remote_servers 配置分片及副本
  • zookeeper 配置zookeeper的IP和端口
  • macros 指定当前主机
  • compression 配置压缩块的大小及压缩算法
    在这里插入图片描述

在如图(左上角)位置加上下面这段(另外,必须删除 /etc/clickhouse-server/config.xml 中的 remote_servers 节点,不然若是在前面配的,会被覆盖掉,导致集群无效)

<include_from>/etc/metrika_1z3s1r.xml</include_from>
<remote_servers incl="clickhouse_remote_servers"/>
<zookeeper incl="zookeeper-servers" optional="true" />
<macros incl="macros" optional="true" />
<compression incl="clickhouse_compression" optional="true" />

在这里插入图片描述
启动 clickhouse-server,然后用 clickhouse-clicent 连上去

#启动server
/etc/init.d/clickhouse-server start
#或者
systemctl start clickhouse-server.service

#查看server状态
/etc/init.d/clickhouse-server status
#使用client连接server
/usr/bin/clickhouse-client --host localhost --port 9000

查询集群信息 select * from system.clusters(若仅有 test 打头的字段,表示集群搭建失败)

  1. 1zookeepers-3shards-0replicas
    在这里插入图片描述
  2. 1zookeepers-1shards-1replicas
    在这里插入图片描述
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值