ClickHouse集群的离线安装

Posted 芋辕-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ClickHouse集群的离线安装相关的知识,希望对你有一定的参考价值。

目录

1 安装总体概况

2 离线安装相应的rpm文件(三台机器都需要)

3 修改配置文件

4 启动ClickServer

5 配置集群

1.安装总体概况

功能说明

主机IP

环境配置

安装

节点1

192.168.56.101

关闭防火墙,

时钟同步,

host映射

Jdk

Zookeeper

ClickHouse

节点2

192.168.56.102

关闭防火墙,

时钟同步,

host映射

Jdk

Zookeeper

ClickHouse

节点3

192.168.56.103

关闭防火墙,

时钟同步,

host映射

Jdk

Zookeeper

ClickHouse

2. 离线安装相应的rpm文件(三台机器都需要)

ClickHouse的安装主要依赖于zookeeper,jdk,所以安装之前记得配置好zookeeper,jdk

还有就是可以先安装好libtool和unixODBC两个rpm包,便于后续连接操作

有需要的小伙伴可以连接自取

链接:https://pan.baidu.com/s/100_AK3qS19y9pdQ4K--uxA (clickhouse和zookeeper)

提取码:23ej

链接:https://pan.baidu.com/s/1V4qawFI2rFGc13hFFx0seA (jdk)

提取码:5qod

rpm -ivh *.rpm

jdk和zookeeper的安装这里就不再赘述。

3 修改配置文件

按照好相应的clickhouse之后,需要对配置文件进行修改,执行以下命令

 vim /etc/clickhouse-server/config.xml

<listen_host>::</listen_host>的注释打开,这样的话才能让ClickHouse被除本机以外的服务器访问(同时在另外两台机器上做同样的修改)

如果想修改数据和日志文件的存储位置,可以修改以下配置

数据文件路径:<path>/var/lib/clickhouse/</path>

日志文件路径:<log>/var/log/clickhouse-server/clickhouse-server.log</log>

4 启动ClickServer

启动clickhouse

systemctl start clickhouse-server

三台机器关闭开机自启

sudo systemctl disable clickhouse-server 

使用client连接server

clickhouse-client -m

能够进去sql输入页面则证明单机clickhouse启动成功

5 配置集群

clickhouse集群的主要作用有两个

(1)创建副本

(2)实现分片集群(三个分片,每个分片只有一个副本(即不设副本))

这里我们只讲述如何配置分片集群的相应文件(副本文件的配置,其实就是后面配置<replica>进行重新设置)

步骤

(1)首先是在config.xml配置文件进行修改,使其关联到外面的metrika.xml文件(文件自己创建)

(2)配置metrika.xml文件的内容

<yandex>
    <clickhouse_remote_servers>
        <gmall_cluster> <!-- 集群名称--> 
              <shard>  <!--集群的第一个分片-->
                 <internal_replication>true</internal_replication>
                 <!--该分片的第一个副本-->
                 <replica>    
                    <host>192.168.56.101</host>
                    <port>9000</port>
                 </replica>
              </shard>
              <shard>  <!--集群的第二个分片-->
                 <internal_replication>true</internal_replication>
                 <replica>    <!--该分片的第一个副本-->
                    <host>192.168.56.102</host>
                     <port>9000</port>
                 </replica>
              </shard>
              <shard>  <!--集群的第三个分片-->
                 <internal_replication>true</internal_replication>
                 <replica>     <!--该分片的第一个副本-->
                    <host>192.168.56.103</host>
                    <port>9000</port>
                 </replica>
              </shard>
        </gmall_cluster>
    </clickhouse_remote_servers>
    <zookeeper-servers>
       <node index="1">
          <host>hadoop101</host>
          <port>2181</port>
       </node>
       <node index="2">
          <host>hadoop102</host>
          <port>2181</port>
      </node>
      <node index="3">
          <host>hadoop103</host>
          <port>2181</port>
      </node>
    </zookeeper-servers>

    <macros>
        <shard>01</shard>   <!--不同机器放的分片数不一样-->
        <replica>rep_1_1</replica>  <!--不同机器放的副本数不一样-->
    </macros>
</yandex>

如果是想要节点2设置一个分片的话,则macros下的配置文件需要修改为

<!-- 一些扩展说明 -->
<!-- 如果是想要节点2设置一个分片的话,则macros下的配置文件需要修改为-->
    <macros>
        <shard>02</shard>   <!--不同机器放的分片数不一样-->
        <replica>rep_2_1</replica>  <!--不同机器放的副本数不一样-->
    </macros>

如果是想要节点3设置一个分片的话,则macros下的配置文件需要修改为

<!-- 一些扩展说明 -->
<!-- 如果是想要节点2设置一个分片的话,则macros下的配置文件需要修改为-->
    <macros>
        <shard>03</shard>   <!--不同机器放的分片数不一样-->
        <replica>rep_3_1</replica>  <!--不同机器放的副本数不一样-->
    </macros>

如果想设置多副本的情况,例如三台机器设置两个分片,只有第一个分片有副本

配置文件可以参考下面:

<?xml version="1.0"?>
<yandex>
    <clickhouse_remote_servers>
        <gmall_cluster> <!-- 集群名称--> 
            <shard>         <!--集群的第一个分片-->
            <internal_replication>true</internal_replication>
                <replica>    <!--该分片的第一个副本-->
                    <host>hadoop202</host>
                    <port>9000</port>
                </replica>
                <replica>    <!--该分片的第二个副本-->
                    <host>hadoop203</host>
                    <port>9000</port>
                </replica>
            </shard>

            <shard>  <!--集群的第二个分片-->
                <internal_replication>true</internal_replication>
                <replica>    <!--该分片的第一个副本-->
                    <host>hadoop204</host>
                    <port>9000</port>
                </replica>
            </shard>
        </gmall_cluster>
    </clickhouse_remote_servers>

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

    <macros>
        <shard>01</shard>   <!--不同机器放的分片数不一样-->
        <replica>rep_1_1</replica>  <!--不同机器放的副本数不一样-->
    </macros>
</yandex>

上面的配置项macros在不同机器也要记得修改

(3)建表操作

需要注意:

  • 会自动同步到节点2和节点3上

  • 集群名字要和配置文件中的一致

  • 分片和副本名称从配置文件的宏定义中获取

create table st_order_mt on cluster gmall_cluster (
    id UInt32,
    sku_id String,
    total_amount Decimal(16,2),
    create_time  Datetime
 ) engine =ReplicatedMergeTree('/clickhouse/tables/shard/st_order_mt_0105','replica')
   partition by toYYYYMMDD(create_time)
   primary key (id)
   order by (id,sku_id);

接着创建Distribute分布式表

create table st_order_mt_all on cluster gmall_cluster
(
    id UInt32,
    sku_id String,
    total_amount Decimal(16,2),
    create_time  Datetime
)engine = Distributed(gmall_cluster,default, st_order_mt,hiveHash(sku_id));

参数含义

Distributed(集群名称库名本地表名分片键)

分片键必须是整型数字,所以用HiveHash函数进行转化,也可以用rand()

!!!可以切换到不同节点中,查看“是否”创建表成功,若创建成功,则证明配置文件没问题.集群搭建成功

以上是关于ClickHouse集群的离线安装的主要内容,如果未能解决你的问题,请参考以下文章

Openshift 4.4 静态 IP 离线安装系列:初始安装

我在哪里可以下载 Visual Studio 2015 Express 的离线安装? [关闭]

如何更新 Visual Studio 2017 的离线安装包

Zabbix3的离线安装

vs2017如何离线修改

Atom插件go-plus的离线安装