ClickHouse的介绍和安装

在写ClickHouse安装之前有必要了解一下ClickHouse相关的概念

ClickHouse概述

ClickHouse是一个快速开源的OLAP数据库管理系统,它是面向列的,允许使用SQL查询实时生成分析报告。ClickHouse是由俄罗斯的Yandex开源的一个数据分析的数据库。ClickHouse的技术演变大致如下:

  1. ROLAP:传统的关系型数据库OLAP,基于MySQL的MyISAM表引擎。
  2. MOLAP:借助物化视图的形式实现数据立方体。预处理的结果存在HBase这类高性能的分布式数据库
  3. HOLAP:R和M的结合体H
  4. ROLAP:ClickHouse

ClickHouse的具体特点如下:

  • 真正面向列的DBMS
  • 数据高效压缩
  • 磁盘存储的数据
  • 多核并行处理
  • 在多个服务器上分布式处理
  • SQL语法支持
  • 向量化引擎
  • 实时数据更新
  • 索引
  • 适合在线查询
  • 支持近似预估计算
  • 支持嵌套的数据结构
  • 支持数组作为数据类型
  • 支持限制类型复杂性以及配额
  • 复制数据对数据完整性的支持 之所以称为DBMS(数据库管理系统),是因为ClickHouse拥有其相关的特性:DDL;DML;权限管理;数据备份;分布式存储等相关功能。
    ClickHouse并不是没有缺点,缺点有这几种:不支持事务;不支持update/delete操作;支持有限操作系统
    以上介绍在官网的文档中都有的,只是搬运过来而已。

ClickHouse的安装

官网:https://clickhouse.yandex/ (介绍文档中有中文介绍)
安装之前执行一下此命令grep -q sse4_2 /proc/cpuinfo && echo “SSE 4.2 supported” || echo “SSE 4.2 not supported.如果输出“SSE 4.2 supported”则代表可以安装ClickHouse
下载地址:https://packagecloud.io/Altinity/clickhouse/
需要下载这几个rpm包:clickhouse-server-common-20.8.3.18-1.el7.x86_64.rpm,clickhouse-common-static-20.8.3.18-1.el7.x86_64.rpm,clickhouse-server-20.8.3.18-1.el7.x86_64.rpm,clickhouse-test-20.8.3.18-1.el7.x86_64.rpm,clickhouse-client-20.8.3.18-1.el7.x86_64.rpm
我是用来三台虚拟机搭建的ClickHouse,在安装之前安装必要的jdk以及zookeeper,在这我就不介绍怎么安装jdk以及zookeeper了。
下载完成之后安装包rpm -ivh ./*.rpm,安装之后就可以启动使用了。
前台启动sudo -u clickhouse clickhouse-server --config-file=/etc/clickhouse-server/config.xml,后台启动nohup sudo -u clickhouse clickhouse-server --config-file=/etc/clickhouse-server/config.xml >null 2>&1 &
使用client连接serverclickhouse-client -m之后我们就可以使用SQL来操作了。
上面的步骤都是单节点的安装,集群版本的安装和单节点的安装类似。在每台节点上都需要下载rpm包,并安装。在各个节点修改步骤如下:

  1. 所有节点修改配置文件config.xml
    在zookeeper标签上面增加如下代码:
    <include_from>/etc/clickhouse-server/config.d/metrika.xml</include_from>

  2. 所有节点新建目录并创建相关内容
    etc/clickhouse-server中创建config.d目录,在该目录下创建metrika.xml,并写入如下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <?xml version="1.0" encoding="utf-8"?>
    <yandex>
    <clickhouse_remote_servers>
    <perftest_3shards_1replicas>
    <shard>
    <internal_replication>true</internal_replication>
    <replica>
    <host>centos7-1</host>
    <port>9000</port>
    </replica>
    </shard>
    <shard>
    <replica>
    <internal_replication>true</internal_replication>
    <host>centos7-2</host>
    <port>9000</port>
    </replica>
    </shard>
    <shard>
    <internal_replication>true</internal_replication>
    <replica>
    <host>centos7-3</host>
    <port>9000</port>
    </replica>
    </shard>
    </perftest_3shards_1replicas>
    </clickhouse_remote_servers>
    <zookeeper-servers>
    <node index="1">
    <host>centos7-1</host>
    <port>2181</port>
    </node>
    <node index="2">
    <host>centos7-2</host>
    <port>2181</port>
    </node>
    <node index="3">
    <host>centos7-3</host>
    <port>2181</port>
    </node>
    </zookeeper-servers>
    <macros>
    <shard>01</shard>
    <replica>centos7-3</replica>
    </macros>
    <networks>
    <ip>::/0</ip>
    </networks>
    <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>

    需要注意的是,标签中的内容对应自己的主机名,<macros>标签中的<replica>需要根据机器名字不同去修改centos7-3

  3. 启动服务
    在启动ClickHouse之前,先启动所有节点的zookeeper服务。之后就可以启动ClickHouse服务了,一共有以下几种启动方式:

    1. 前台启动sudo -u clickhouse clickhouse-server --config-file=/etc/clickhouse-server/config.xml
    2. 后台启动nohup sudo -u clickhouse clickhouse-server --config-file=/etc/clickhouse-server/config.xml >null 2>&1 &
    3. service clickhouse-server start或者systemctl start clickhouse-server方式启动
    4. clickhouse-client -m可进入clickhouse的命令行