ClickHouse离线集群安装与使用

    ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。是现在比较火的一个大数据分析组件,可用于报表底层数据、实时数据库等场景。

ClickHouse有以下特性

  • 真正的列式数据库管理系统
  • 数据压缩
  • 数据的磁盘存储
  • 多核心并行处理
  • 多服务器分布式处理
  • 支持SQL
  • 向量引擎
  • 实时的数据更新
  • 索引
  • 适合在线查询
  • 支持近似计算
  • 自适应连接算法
  • 支持数据复制和数据完整性
  • 角色的访问控制

ClickHouse有以下几点不足

  1. 没有完整的事务支持。
  2. 缺少高频率,低延迟的修改或删除已存在数据的能力。仅能用于批量删除或修改数据,但这符合 GDPR
  3. 稀疏索引使得ClickHouse不适合通过其键检索单行的点查询。

系统要求

ClickHouse可以在任何具有x86_64,AArch64或PowerPC64LE CPU架构的Linux,FreeBSD或Mac OS X上运行。

服务器如下,都是CentOS7.4,8c16g

192.168.0.1    bigdata-clickhouse-01

192.168.0.2    bigdata-clickhouse-02

192.168.0.3    bigdata-clickhouse-03

 LInux服务器的安装步骤如下

一、下载离线包

下载地址https://packages.clickhouse.com/tgz/stable/

 我下载了下面4个包:

https://packages.clickhouse.com/tgz/stable/clickhouse-client-23.4.1.1943-arm64.tgz
https://packages.clickhouse.com/tgz/stable/clickhouse-common-static-23.4.1.1943-arm64.tgz
https://packages.clickhouse.com/tgz/stable/clickhouse-common-static-dbg-23.4.1.1943-arm64.tgz
https://packages.clickhouse.com/tgz/stable/clickhouse-server-23.4.1.1943-arm64.tgz

 

二、解压并安装

    下载后解压缩下载资源文件并使用安装脚本进行安装。我这里是参照官网,每个安装包一行命令搞定,也可以拆开多个命令执行,安装顺序是:clickhouse-common-static clickhouse-common-static-dbg clickhouse-server clickhouse-client

tar -xzvf "clickhouse-common-static-23.4.1.1943-arm64.tgz" \
  || tar -xzvf "clickhouse-common-static-23.4.1.1943.tgz"
sudo "clickhouse-common-static-23.4.1.1943/install/doinst.sh"

tar -xzvf "clickhouse-common-static-dbg-23.4.1.1943-arm64.tgz" \
  || tar -xzvf "clickhouse-common-static-dbg-23.4.1.1943.tgz"
sudo "clickhouse-common-static-dbg-23.4.1.1943/install/doinst.sh"

tar -xzvf "clickhouse-server-23.4.1.1943-arm64.tgz" \
  || tar -xzvf "clickhouse-server-23.4.1.1943.tgz"
sudo "clickhouse-server-23.4.1.1943/install/doinst.sh" configure
sudo /etc/init.d/clickhouse-server start

tar -xzvf "clickhouse-client-23.4.1.1943-arm64.tgz" \
  || tar -xzvf "clickhouse-client-23.4.1.1943.tgz"
sudo "clickhouse-client-23.4.1.1943/install/doinst.sh"

3台服务器都需要按照上面步骤安装好。

  • clickhouse-client 包,包含clickhouse-client客户端,它是交互式ClickHouse控制台客户端。
  • clickhouse-common 包,包含一个ClickHouse可执行文件。
  • clickhouse-server 包,包含要作为服务端运行的ClickHouse配置文件。

三、修改配置文件

1.修改配置文件

文件在/etc/clickhouse-server/config.xml

我配置的是具有三个分片,每个分片一个副本的集群

<remote_servers>
    <ck_cluster>
        <shard>
            <replica>
                <host>bigdata-clickhouse-01</host>
                <port>9000</port>
            </replica>
        </shard>
        <shard>
            <replica>
                <host>bigdata-clickhouse-02</host>
                <port>9000</port>
            </replica>
        </shard>
        <shard>
            <replica>
                <host>bigdata-clickhouse-03</host>
                <port>9000</port>
            </replica>
        </shard>
    </ck_cluster>
</remote_servers>

ZooKeeper位置在配置文件中指定:

<zookeeper>
    <node>
        <host>bigdata-clickhouse-01</host>
        <port>2181</port>
    </node>
    <node>
        <host>bigdata-clickhouse-02</host>
        <port>2181</port>
    </node>
    <node>
        <host>bigdata-clickhouse-03</host>
        <port>2181</port>
    </node>
</zookeeper>

此外,我们需要设置宏来识别每个用于创建表的分片和副本:

<macros>
    <shard>01</shard>
    <replica>01</replica>
</macros>

 

2.配置用户名和密码

位置在/etc/clickhouse-server/users.xml

在这里插入图片描述在这里插入图片描述 

四、启动clickhouse

$ sudo /etc/init.d/clickhouse-server start

日志文件将输出在/var/log/clickhouse-server/文件夹。

如果服务器没有启动,检查/etc/clickhouse-server/config.xml中的配置。

您可以使用命令行客户端连接到它:

$ clickhouse-client --port 9100 -h 192.168.0.1 -u date_dev --password 123456

默认情况下,使用default用户并不携带密码连接到localhost:9000。还可以使用--host参数连接到指定服务器。

结果如下所示:

$ ./clickhouse-client --port 9100 -h 192.168.0.1 -u date_dev --password 123456
ClickHouse client version 23.4.1.1943.
Connecting to localhost:9000.
Connected to ClickHouse server version 23.4.1.1943.

:) SELECT 1

SELECT 1

┌─1─┐
│ 1 │
└───┘

1 rows in set. Elapsed: 0.003 sec.

:)

开心,系统已经工作了!

可用如下命令查询集群信息,查看每个节点是否正常运行

select * from systems.clusters

 

五、建立集群表

1. 建库

其中的ck_clusterck_cluster为集群名称,是前面配置3分区时指定的集群名字,这个命令只要在任何一个节点客户端上执行即可。

CREATE DATABASE IF NOT EXISTS ck_database  on cluster ck_cluster;

2.建本地表

use ck_database;
CREATE TABLE IF NOT EXISTS user_local on cluster ck_cluster
 (
     id Int32,
     name String
 )ENGINE = MergeTree()
 ORDER BY id
 PARTITION BY id
 PRIMARY KEY id;

3.建集群分布式表

CREATE TABLE IF NOT EXISTS user_cluster ON CLUSTER ck_cluster
 (
     id Int32,
     name String
 )ENGINE = Distributed(ck_cluster, ck_database, user_local,  id);

分布式引擎的格式为Distributed('集群名称'、'数据库名称'、'本地表名称'、'分片id,如果没有合适的可以用rand()')

 

至此,Clickhouse安装就完成了。

使用 Ansible 安装部署 ClickHouse 集群,需要完成以下步骤: 1. 确保已经在每个目标主机上安装ClickHouse,并确保 ClickHouse 已经可以正常运行。 2. 创建一个 Ansible 的 inventory 文件,该文件列出了所有 ClickHouse 集群中的主机及其 IP 地址。一个简单的 inventory 文件可能如下所示: ``` [clickhouse] ch1.example.com ch2.example.com ch3.example.com ``` 3. 创建一个 Ansible playbook 文件,该文件包含用于安装和配置 ClickHouse 的任务。以下是一个示例 playbook: ``` - name: Install and configure ClickHouse hosts: clickhouse become: true tasks: - name: Install ClickHouse apt: name: clickhouse-server state: present become: true become_user: root - name: Configure ClickHouse template: src: clickhouse-server.xml.j2 dest: /etc/clickhouse-server/config.xml become: true become_user: clickhouse ``` 在这个 playbook 中,我们首先使用 Ansible 的 apt 模块安装 ClickHouse,然后使用 Ansible 的 template 模块将 ClickHouse 配置文件复制到目标主机的 `/etc/clickhouse-server/config.xml` 文件中。 4. 创建一个 ClickHouse 配置模板文件。这个模板文件应该包含用于配置 ClickHouse 的所有参数。以下是一个示例配置文件: ``` <yandex> <clickhouse_server> <interserver_http_host>0.0.0.0</interserver_http_host> <listen_host>0.0.0.0</listen_host> <listen_port>9000</listen_port> <max_connections>1000</max_connections> <max_concurrent_queries>1000</max_concurrent_queries> <distributed_ddl> <num_tries>3</num_tries> <try_delay_sec>3</try_delay_sec> </distributed_ddl> <users> <default> <password></password> <networks> <ip>::/0</ip> </networks> </default> </users> </clickhouse_server> </yandex> ``` 请注意,这个配置文件只包含了一些基本的 ClickHouse 配置选项。您应该根据自己的需求进行修改。 5. 运行 playbook,部署 ClickHouse 集群。要运行 playbook,请使用以下命令: ``` ansible-playbook -i inventory_file playbook_file.yml ``` 这将在 ClickHouse 集群中的所有主机上运行 playbook。 以上就是使用 Ansible 安装部署 ClickHouse 集群的一般步骤。请注意,这只是一个基本的例子。要根据自己的需求对 playbook 进行修改。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白杨Shayne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值