目录
第一章 ClickHouse入门
1.1 ClickHouse的特点
1.1.1 列式存储
1.1.2 DBMS的功能
1.1.3 多样化引擎
1.1.4 高吞吐写入能力
1.1.5 数据分区与线程级并行
1.1.6 性能对比
第二章 ClickHouse的安装
2.1 准备工作
2.1.1 确定防火墙处于关闭状态
2.1.2 CentOS取消打开文件数限制
2.1.3 安装依赖
2.1.4 CentOS取消SELINUX
2.2 单机安装
2.2.1 在hadoop202的/opt/software下创建clickhouse目录
2.2.2 将资料/ClickHouse下4个文件上传到hadoop202的software/clickhouse目录下
2.2.3 将安装文件同步到hadoop203、hadoop204
2.2.4 分别在三台机子上安装这4个rpm文件
2.2.5 修改配置文件
2.2.6 启动Clickhouse
2.2.7 三台机器上关闭开机自启
2.2.8 使用client连接server
第一章 ClickHouse入门
ClickHouse 是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C++语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。
1.1 ClickHouse的特点
1.1.1 列式存储
以下面的表为例:
Id | Name | Age |
1 | 张三 | 18 |
2 | 李四 | 22 |
3 | 王五 | 34 |
- 采用行式存储时,数据在磁盘上的组织结构为:
1 | 张三 | 18 | 2 | 李四 | 22 | 3 | 王五 | 34 |
好处是想查某个人所有的属性时,可以通过一次磁盘查找加顺序读取就可以。但是当想查所有人的年龄时,需要不停的查找,或者全表扫描才行,遍历的很多数据都是不需要的。
- 采用列式存储时,数据在磁盘上的组织结构为:
1 | 2 | 3 | 张三 | 李四 | 王五 | 18 | 22 | 34 |
这时想查所有人的年龄只需把年龄那一列拿出来就可以了
- 列式储存的好处:
- 对于列的聚合,计数,求和等统计操作原因优于行式存储。
- 由于某一列的数据类型都是相同的,针对于数据存储更容易进行数据压缩,每一列选择更优的数据压缩算法,大大提高了数据的压缩比重。
- 由于数据压缩比更好,一方面节省了磁盘空间,另一方面对于cache也有了更大的发挥空间。
1.1.2 DBMS的功能
几乎覆盖了标准SQL的大部分语法,包括 DDL和 DML,以及配套的各种函数,用户管理及权限管理,数据的备份与恢复
1.1.3 多样化引擎
ClickHouse和MySQL类似,把表级的存储引擎插件化,根据表的不同需求可以设定不同的存储引擎。目前包括合并树、日志、接口和其他四大类20多种引擎。
1.1.4 高吞吐写入能力
ClickHouse采用类LSM Tree的结构,数据写入后定期在后台Compaction。通过类LSM tree的结构,ClickHouse在数据导入时全部是顺序append写,写入后数据段不可更改,在后台compaction时也是多个段merge sort后顺序写回磁盘。顺序写的特性,充分利用了磁盘的吞吐能力,即便在HDD上也有着优异的写入性能。
官方公开benchmark测试显示能够达到50MB-200MB/s的写入吞吐能力,按照每行100Byte估算,大约相当于50W-200W条/s的写入速度。
1.1.5 数据分区与线程级并行
ClickHouse将数据划分为多个partition,每个partition再进一步划分为多个index granularity,然后通过多个CPU核心分别处理其中的一部分来实现并行数据处理。在这种设计下,单条Query就能利用整机所有CPU。极致的并行处理能力,极大的降低了查询延时。
所以,ClickHouse即使对于大量数据的查询也能够化整为零平行处理。但是有一个弊端就是对于单条查询使用多cpu,就不利于同时并发多条查询。所以对于高qps的查询业务,ClickHouse并不是强项。
1.1.6 性能对比
某网站精华帖,中对几款数据库做了性能对比。
- 单表查询
- 关联查询
结论: ClickHouse像很多OLAP数据库一样,单表查询速度由于关联查询,而且ClickHouse的两者差距更为明显。
第二章 ClickHouse的安装
2.1 准备工作
2.1.1 确定防火墙处于关闭状态
2.1.2 CentOS取消打开文件数限制
- 在hadoop202的 /etc/security/limits.conf文件的末尾加入以下内容
[atguigu@hadoop202 ~]$ sudo vim /etc/security/limits.conf
* soft nofile 65536* hard nofile 65536* soft nproc 131072* hard nproc 131072
- 在hadoop202的/etc/security/limits.d/20-nproc.conf文件的末尾加入以下内容
[atguigu@hadoop202 ~]$ sudo vim /etc/security/limits.d/20-nproc.conf
* soft nofile 65536* hard nofile 65536* soft nproc 131072* hard nproc 131072
- 执行同步操作
[atguigu@hadoop202 ~]$ sudo /home/atguigu/bin/xsync /etc/security/limits.conf
[atguigu@hadoop202 ~]$ sudo /home/atguigu/bin/xsync /etc/security/limits.d/20-nproc.conf
2.1.3 安装依赖
[atguigu@hadoop202 ~]$ sudo yum install -y libtool
[atguigu@hadoop202 ~]$ sudo yum install -y *unixODBC*
在hadoop203、hadoop204上执行以上操作
2.1.4 CentOS取消SELINUX
- 修改/etc/selinux/config中的SELINUX=disabled
[atguigu@hadoop202 ~]$ sudo vim /etc/selinux/config
SELINUX=disabled
注意:别改错了
- 执行同步操作
[atguigu@hadoop202 ~]$ sudo /home/atguigu/bin/xsync /etc/selinux/config
- 重启三台服务器
2.2 单机安装
官网:Fast Open-Source OLAP DBMS - ClickHouse
下载地址:https://repo.clickhouse.tech/rpm/stable/x86_64/
2.2.1 在hadoop202的/opt/software下创建clickhouse目录
[atguigu@hadoop202 software]$ mkdir clickhouse
2.2.2 将资料/ClickHouse下4个文件上传到hadoop202的software/clickhouse目录下
2.2.3 将安装文件同步到hadoop203、hadoop204
[atguigu@hadoop202 software]$ xsync clickhouse/
2.2.4 分别在三台机子上安装这4个rpm文件
[atguigu@hadoop202 clickhouse]$ sudo rpm -ivh *.rpm
sudo rpm -qa|grep clickhouse查看安装情况
2.2.5 修改配置文件
[atguigu@hadoop202 clickhouse]$ sudo vim /etc/clickhouse-server/config.xml
把 <listen_host>::</listen_host> 的注释打开,这样的话才能让ClickHouse被除本机以外的服务器访问,在70行左右。
分发配置文件
sudo /home/atguigu/bin/xsync /etc/clickhouse-server/config.xml
在这个文件中,有ClickHouse的一些默认路径配置,比较重要的
数据文件路径:<path>/var/lib/clickhouse/</path>
日志文件路径:<log>/var/log/clickhouse-server/clickhouse-server.log</log>
2.2.6 启动Clickhouse
[atguigu@hadoop202 clickhouse]$ sudo systemctl start clickhouse-server
注意:如果安装过zabbix,需要禁用一些服务的开机自启
2.2.7 三台机器上关闭开机自启
[atguigu@hadoop202 clickhouse]$sudo systemctl disable clickhouse-server
2.2.8 使用client连接server
[atguigu@hadoop202 clickhouse]$ clickhouse-client -m
-m :可以在命令窗口输入多行命令