一、简介
Clickhouse是由俄国Yandex在2016年发布的一个分布式数据分析型数据库,其效率要比Veritca快约5倍,其不依赖于Hadoop生态软件和基础及高可用的特性适用于许多数据分析场景
1.1 特性
1.数据压缩 在一些列式数据库管理系统中(例如:InfiniDB CE 和 MonetDB) 并没有使用数据压缩。但是, 若想达到比较优异的性能,数据压缩确实起到了至关重要的作用。
2.数据的磁盘存储 许多的列式数据库(如 SAP HANA, Google PowerDrill)只能在内存中工作,这种方式会造成比实际更多的设备预算。ClickHouse被设计用于工作在传统磁盘上的系统,它提供每GB更低的存储成本,但如果有可以使用SSD和内存,它也会合理的利用这些资源。
6.多核心并行处理 ClickHouse会使用服务器上一切可用的资源,从而以最自然的方式并行处理大型查询。
4.多服务器分布式处理 上面提到的列式数据库管理系统中,几乎没有一个支持分布式的查询处理。 在ClickHouse中,数据可以保存在不同的shard上,每一个shard都由一组用于容错的replica组成,查询可以并行地在所有shard上进行处理。这些对用户来说是透明的
5.支持SQL ClickHouse支持基于SQL的声明式查询语言,该语言大部分情况下是与SQL标准兼容的。 支持的查询包括 GROUP BY,ORDER BY,IN,JOIN以及非相关子查询。 不支持窗口函数和相关子查询。
6.向量引擎 为了高效的使用CPU,数据不仅仅按列存储,同时还按向量(列的一部分)进行处理,这样可以更加高效地使用CPU。
7.实时的数据更新 ClickHouse支持在表中定义主键。为了使查询能够快速在主键中进行范围查找,数据总是以增量的方式有序的存储在MergeTree中。因此,数据可以持续不断地高效的写入到表中,并且写入的过程中不会存在任何加锁的行为。
8.索引 按照主键对数据进行排序,这将帮助ClickHouse在几十毫秒以内完成对数据特定值或范围的查找。
9.适合在线查询 在线查询意味着在没有对数据做任何预处理的情况下以极低的延迟处理查询并将结果加载到用户的页面中。
10.支持近似计算 ClickHouse提供各种各样在允许牺牲数据精度的情况下对查询进行加速的方法:
用于近似计算的各类聚合函数,如:distinct values, medians, quantiles 基于数据的部分样本进行近似查询。这时,仅会从磁盘检索少部分比例的数据。 不使用全部的聚合条件,通过随机选择有限个数据聚合条件进行聚合。这在数据聚合条件满足某些分布条件下,在提供相当准确的聚合结果的同时降低了计算资源的使用。 支持数据复制和数据完整性 ClickHouse使用异步的多主复制技术。当数据被写入任何一个可用副本后,系统会在后台将数据分发给其他副本,以保证系统在不同副本上保持相同的数据。在大多数情况下ClickHouse能在故障后自动恢复,在一些少数的复杂情况下需要手动恢复。
1.2 限制
1.没有完整的事务支持。 2.缺少高频率,低延迟的修改或删除已存在数据的能力。仅能用于批量删除或修改数据,但这符合 GDPR。 3.稀疏索引使得ClickHouse不适合通过其键检索单行的点查询。
二、安装与部署
2.1 环境要求
Clickhouse 仅支持Linux 且必须支持SSE4.2 指令集 这里用Centos7进行演示
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
得出下列结果
SSE 4.2 supported
如果服务器不支持SSE指令集,则不能直接下载预编译安装包,需要通过源码编译特定版本进行安装
systemctl stop firewalld.service
systemctl disable firewalld.service
关闭防火墙以及防火墙自启动
2.2 版本选择及下载
mkdir -p /opt/software/clickhouse/
先创建目录存放下载的文件
然后选择所需要的的版本进行下载
https:///Altinity/clickhouse
选择所需的安装包,只需要下面四种即可,其中el/7表示为centos7版本 (此处为示例版本):
包名 |
---|
clickhouse-server-common-20.3.12.112-1.el7.x86_64.rpm | clickhouse-server-20.3.12.112-1.el7.x86_64.rpm el/7 | clickhouse-common-static-20.3.12.112-1.el7.x86_64.rpm | clickhouse-client-20.3.12.112-1.el7.x86_64.rpm |
在该页面中找到下载链接即可,示例: wget --content-disposition https:///Altinity/clickhouse/packages/el/7/clickhouse-server-common-20.3.12.112-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https:///Altinity/clickhouse/packages/el/7/clickhouse-server-20.3.12.112-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https:///Altinity/clickhouse/packages/el/7/clickhouse-common-static-20.3.12.112-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https:///Altinity/clickhouse/packages/el/7/clickhouse-client-20.3.12.112-1.el7.x86_64.rpm/download.rpm
更多安装方法请参照官方安装文档,此处不再阐述
2.3 安装
下载上述4类安装包后到对应目录中,进行安装
# rpm -ivh ./*.rpm
全部安装完无错误信息即可,在过程中可能会出现缺少安装包的情况,此时需要将缺失的依赖补齐即可
2.4 Clickhouse目录结构
- /etc/clickhouse-server : 服务端的配置文件目录,包括全局配置config.xml 和用户配置users.xml,其中如需要外网访问则需要打开config.xml中更改配置:
# vi /etc/clickhouse-server/config.xml
<interserver_http_host>example.yandex.ru</interserver_http_host>
-->
<!-- Listen specified host. use :: (wildcard IPv6 address), if you want to accept connections both with IPv4 and IPv6 from everywhere. -->
<!-- <listen_host>::</listen_host> -->
<!-- Same for hosts with disabled ipv6: -->
<!-- <listen_host>0.0.0.0</listen_host> -->
<!-- Default values - try listen localhost on ipv4 and ipv6: -->
<!--
<listen_host>::1</listen_host>
<listen_host>127.0.0.1</listen_host>
-->
<!-- Don't exit if ipv6 or ipv4 unavailable, but listen_host with this protocol specified -->
<!-- <listen_try>0</listen_try> -->
其中需要放开<listen_host>::</listen_host>的注释即可
- /var/lib/clickhouse : 默认的数据存储目录,通常会修改,将数据保存到大容量磁盘路径中
- /var/log/cilckhouse-server : 默认保存日志的目录,通常会修改,将数据保存到大容量磁盘路径中
2.5启动服务
sudo service clickhouse-server start
Start clickhouse-server service: Path to data directory in /etc/clickhouse-server/config.xml: /var/lib/clickhouse/
DONE
可以在/var/log/clickhouse-server/目录中查看日志。
如果服务没有启动,请检查配置文件 /etc/clickhouse-server/config.xml。
你也可以在控制台中直接启动服务:
clickhouse-server --config-file=/etc/clickhouse-server/config.xml
在这种情况下,日志将被打印到控制台中,这在开发过程中很方便。 如果配置文件在当前目录中,你可以不指定’–config-file’参数。它默认使用’./config.xml’。
你可以使用命令行客户端连接到服务:
clickhouse-client
ClickHouse client version 20.3.12.112.
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 20.3.12 revision 54433.
wbl.clickhouse :)
验证sql
wbl.clickhouse :) select 1
SELECT 1
┌─1─┐
│ 1 │
└───┘
1 rows in set. Elapsed: 0.003 sec.
参考资料
- Clickhouse中文文档[引用日期2020-06-29]
- ClickHouse原理解析与应用实践 .朱凯[引用日期2020-06-29]
|