ClickHouse简介
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。ClickHouse最初是一款名为Yandex.Metrica的产品,主要用于WEB流量分析。ClickHouse的全称是Click Stream,Data WareHouse,简称ClickHouse。
ClickHouse非常适用于商业智能领域,除此之外,它也能够被广泛应用于广告流量、Web、App流量、电信、金融、电子商务、信息安全、网络游戏、物联网等众多其他领域。ClickHouse具有以下特点:
-
支持完备的SQL操作
-
列式存储与数据压缩
-
向量化执行引擎
-
关系型模型(与传统数据库类似)
-
丰富的表引擎
-
并行处理
-
在线查询
-
数据分片
ClickHouse作为一款高性能OLAP数据库,存在以下不足。
-
不支持事务。
-
不擅长根据主键按行粒度进行查询(虽然支持),故不应该把ClickHouse当作Key-Value数据库使用。
-
不擅长按行删除数据(虽然支持)
单机安装
下载RPM包
本文安装方式选择的是离线安装,可以在下面的链接中下载对应的rpm包,也可以直接百度云下载
-- rpm包地址
https://packagecloud.io/Altinity/clickhouse
-- 百度云地址
链接:https://pan.baidu.com/s/1pFR66SzLvPYMfcpuPJww5A
提取码:gh5a
在我们安装的软件中包含这些包:
clickhouse-client
包,包含 clickhouse-client 应用程序,它是交互式ClickHouse控制台客户端。clickhouse-common
包,包含一个ClickHouse可执行文件。clickhouse-server
包,包含要作为服务端运行的ClickHouse配置文件。
总共包含四个RPM包,
clickhouse-client-19.17.4.11-1.el7.x86_64.rpm
clickhouse-common-static-19.17.4.11-1.el7.x86_64.rpm
clickhouse-server-19.17.4.11-1.el7.x86_64.rpm
clickhouse-server-common-19.17.4.11-1.el7.x86_64.rpm
尖叫提示:如果安装过程中,报错:依赖检测失败,表示缺少依赖包
可以先手动安装libicu-50.2-4.el7_7.x86_64.rpm依赖包
关闭防火墙
## 查看防火墙状态。
systemctl status firewalld
## 临时关闭防火墙命令。重启电脑后,防火墙自动起来。
systemctl stop firewalld
## 永久关闭防火墙命令。重启后,防火墙不会自动启动。
systemctl disable firewalld
系统要求
ClickHouse可以在任何具有x86_64,AArch64或PowerPC64LE CPU架构的Linux,FreeBSD或Mac OS X上运行。虽然预构建的二进制文件通常是为x86 _64编译并利用SSE 4.2指令集,但除非另有说明,否则使用支持它的CPU将成为额外的系统要求。这是检查当前CPU是否支持SSE 4.2的命令:
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
SSE 4.2 supported
要在不支持SSE 4.2或具有AArch64或PowerPC64LE体系结构的处理器上运行ClickHouse,应该通过源构建ClickHouse进行适当的配置调整。
安装RPM包
## 将rpm包上传至/opt/software目录下
## 执行如下命令进行安装
[root@cdh06 software]# rpm -ivh *.rpm
错误:依赖检测失败:
libicudata.so.50()(64bit) 被 clickhouse-common-static-19.17.4.11-1.el7.x86_64 需要
libicui18n.so.50()(64bit) 被 clickhouse-common-static-19.17.4.11-1.el7.x86_64 需要
libicuuc.so.50()(64bit) 被 clickhouse-common-static-19.17.4.11-1.el7.x86_64 需要
libicudata.so.50()(64bit) 被 clickhouse-server-19.17.4.11-1.el7.x86_64 需要
libicui18n.so.50()(64bit) 被 clickhouse-server-19.17.4.11-1.el7.x86_64 需要
libicuuc.so.50()(64bit) 被 clickhouse-server-19.17.4.11-1.el7.x86_64 需要
## 上面安装报错,缺少相应的依赖包,
## 需要下载相对应的依赖包
## 下载libicu-50.2-4.el7_7.x86_64.rpm进行安装即可
查看安装信息
目录结构
-
/etc/clickhouse-server:服务端的配置文件目录,包括全局配置config.xml和用户配置users.xml等。
-
/etc/clickhouse-client:客户端配置,包括conf.d文件夹和config.xml文件。
-
/var/lib/clickhouse:默认的数据存储目录(通常会修改默认路径配置,将数据保存到大容量磁盘挂载的路径)。
-
/var/log/clickhouse-server:默认保存日志的目录(通常会修改路径配置,将日志保存到大容量磁盘挂载的路径)。
配置文件
- /etc/security/limits.d/clickhouse.conf:文件句柄数量的配置
[root@cdh06 clickhouse-server]# cat /etc/security/limits.d/clickhouse.conf
clickhouse soft nofile 262144
clickhouse hard nofile 262144
该配置也可以通过config.xml的max_open_files修改
<!-- Set limit on number of open files (default: maximum). This setting makes sense on Mac OS X because getrlimit() fails to retrieve correct maximum value. -->
<!-- <max_open_files>262144</max_open_files> -->
- /etc/cron.d/clickhouse-server:cron:定时任务配置,用于恢复因异常原因中断的ClickHouse服务进程,其默认的配置如下。
[root@cdh06 cron.d]# cat /etc/cron.d/clickhouse-server
#*/10 * * * * root (which service > /dev/null 2>&1 && (service clickhouse-server condstart ||:)) || /etc/init.d/clickhouse-server condstart > /dev/null 2>&1
可执行文件
最后是一组在/usr/bin路径下的可执行文件:
-
clickhouse:主程序的可执行文件。
-
clickhouse-client:一个指向ClickHouse可执行文件的软链接,供客户端连接使用。
-
clickhouse-server:一个指向ClickHouse可执行文件的软链接,供服务端启动使用。
-
clickhouse-compressor:内置提供的压缩工具,可用于数据的正压反解。
启动/关闭服务
## 启动服务
[root@cdh06 ~]# service clickhouse-server s