ClickHouse-入门及Linux单机安装

ClickHouse 入门

ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库(DBMS),使用 C++语言编写,主要用于在线分析处理查询(OLAP)(适合一次写入多次读写的操作,是分析性数据库,对增删改操作支持没那么优秀),能够使用 SQL 查询实时生成分析数据报告。

OLAP:联机查询处理,擅长一次插入多次查询分析

OLTP:联机事务处理,代表是Mysql、Oracle等关系型数据库,擅长增、删、改、查(CRUD)

ClickHouse 的特点

列式存储

以下面的表为例:

在这里插入图片描述

1)采用行式存储时,数据在磁盘上的组织结构为:
在这里插入图片描述

2)采用列式存储时,数据在磁盘上的组织结构为:

在这里插入图片描述

3)列式储存的好处:

对于列的聚合,计数,求和等统计操作原因优于行式存储。

由于某一列的数据类型都是相同的,针对于数据存储更容易进行数据压缩,每一列选择更优的数据压缩算法,大大提高了数据的压缩比重。

由于数据压缩比更好,一方面节省了磁盘空间,另一方面对于 cache 也有了更大的发挥空间。

DBMS 的功能

几乎覆盖了标准 SQL 的大部分语法,包括 DDL 和 DML,以及配套的各种函数,用户管理及权限管理,数据的备份与恢复。

多样化引擎

ClickHouse 和 MySQL 类似,把表级的存储引擎插件化,根据表的不同需求可以设定不同的存储引擎。目前包括合并树、日志、接口和其他四大类 20 多种引擎。

最常用的是合并数引擎。

高吞吐写入能力

ClickHouse 采用类 LSM Tree 的结构,数据写入后定期在后台 Compaction(合并)。通过类 LSM tree的结构,ClickHouse 在数据导入时全部是顺序 append 写,写入后数据段不可更改,在后台compaction 时也是多个段 merge sort 后顺序写回磁盘。顺序写的特性,充分利用了磁盘的吞吐能力,即便在 HDD 上也有着优异的写入性能。

官方公开 benchmark 测试显示能够达到 50MB-200MB/s 的写入吞吐能力,按照每行100Byte 估算,大约相当于 50W-200W 条/s 的写入速度。

数据分区与线程级并行

ClickHouse 将数据划分为多个 partition,每个 partition 再进一步划分为多个 index granularity(索引粒度),然后通过多个 CPU 核心分别处理其中的一部分来实现并行数据处理。在这种设计下,单条 Query 就能利用整机所有 CPU(特别吃CPU资源)。极致的并行处理能力,极大的降低了查询延时。

所以,ClickHouse 即使对于大量数据的查询也能够化整为零平行处理。但是有一个弊端就是对于单条查询使用多 cpu,就不利于同时并发多条查询。所以对于高 qps(每秒查询次数) 的查询业务,ClickHouse 并不是强项

分区的目的是为了避免全表扫描

ClickHouse不适合做初始的存储,它存储的数据最好是全部处理完成的,然后将其写入到一个宽表当中,因为它非常适合做宽表的查询。

性能对比

某网站精华帖,中对几款数据库做了性能对比

1)单表查询

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NiMQuxY3-1638844965437)(/home/lxj/.config/Typora/typora-user-images/1631522826671.png)]

2)关联查询
在这里插入图片描述

结论: ClickHouse 像很多 OLAP 数据库一样,单表查询速度高于关联查询,而且 ClickHouse的两者差距更为明显。ClickHouse不适合进行关联查询。

使用ClickHouse要避免使用Join操作

ClickHouse 的安装

准备工作

确定防火墙处于关闭状态

## 设置开机启用防火墙:
systemctl enable firewalld.service

## 设置开机禁用防火墙:
systemctl disable firewalld.service

## 启动防火墙:
systemctl start firewalld

## 关闭防火墙:
systemctl stop firewalld

## 检查防火墙状态:
systemctl status firewalld

CentOS 取消打开文件数限制

## 在 /etc/security/limits.conf 文件的末尾加入以下内容
### nofile为用户能够打开的文件数
### nproc为用户能够打开的进程数
[bd@localServer ~]$ sudo vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

## 在 /etc/security/limits.d/20-nproc.conf 文件的末尾加入以下内容
[bd@localServer ~]$ sudo vim /etc/security/limits.d/20-nproc.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

## 执行同步操作,将文件发送到集群的其他服务器
[bd@localServer ~]$ sudo /usr/local/bin/xsync /etc/security/limits.conf

[bd@localServer ~]$ sudo /usr/local/bin/xsync /etc/security/limits.d/20-nproc.conf

## 重新用户登录后生效
## 使用以下命令查看具体值是否已经变化生效
[bd@localServer ~]$ ulimit -a
...
open files                      (-n) 65536
...
max user processes              (-u) 131072
...

安装依赖

[bd@localServer ~]$ sudo yum install -y libtool

[bd@localServer ~]$ sudo yum install -y *unixODBC*

然后在别的集群服务器上执行相同的操作。

CentOS 取消 SELINUX

security enforce linux,管理Linux系统安全的,因为太强了,所以默认情况下,很多软件的使用都会收到它的限制。

## 修改/etc/selinux/config 中的 SELINUX=disabled
[bd@hadoop113 ~]$ sudo vim /etc/selinux/config
## 将enforcing为生效、disable为关闭
SELINUX=disabled

### 注意:别改错了

## 执行同步操作
[bd@hadoop113 ~]$ sudo /usr/local/bin/xsync /etc/selinux/

## 重启三台服务器

### 查看当前SELinux的状态Disabled为关闭了
[bd@hadoop113 ~]$ getenforce 
Disabled

### 临时关闭SELinux
[bd@hadoop113 ~]$ setenforce 0

单机安装

官网:https://clickhouse.tech/

下载地址:http://repo.red-soft.biz/repos/clickhouse/stable/el7/

重要版本:20.5支持final、20.6.3支持explain(sql执行计划)、20.8支持实时同步mysql数据;

本次安装额包为21.7.3.14

## 在/opt/software下创建clickhouse目录

## 将以下4个文件上传到服务器上的software/clickhouse目录下

## 将安装文件同步到其他服务器
[bd@hadoop113 software]$ xsync clickhouse

## 分别在三台机子上安装这 4 个 rpm 文件
[bd@hadoop113 software]$ sudo rpm -ivh *.rpm
### sudo rpm -qa | grep clickhouse 查看安装情况
#### 安装过程中会提示输入密码,本次测试通过回车直接跳过,即本次测试无密码
#### 安装完成之后相关文件的目录:
#### bin文件夹/user/bin相关目录下
#### conf文件夹在/etc/clickhouse-server相关目录下
#### lib文件夹在/var/lib/clickhouse相关目录下,数据也在这个目录,可以通过配置文件修改
#### log文件夹在/var/log/clickhouse-server相关目录下,可以通过配置文件修改
#### 

## 修改配置文件
### 配置文件有config.xml和users.xml
### config.xml为服务端配置,集群部署配置这个
### users.xml为参数配置,比如配置cpu、内存等,使用部署配这个
[bd@hadoop113 software]$ sudo vim /etc/clickhouse-server/config.xml
### 把 <listen_host>::</listen_host> 的注释打开,这样的话才能让 ClickHouse 被除本机以外的服务器访问

### 修改完成之后分发配置文件
[bd@hadoop113 software]$ xsync /etc/clickhouse-server/config.xml

#### 在这个文件中,有 ClickHouse 的一些默认路径配置,比较重要的
#### 数据文件路径:<path>/var/lib/clickhouse/</path>
#### 日志文件路径:<log>/var/log/clickhouse-server/clickhouse-server.log</log>
#### 错误日志文件路径:<errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>

## 启动 Server,端口默认是9000
[bd@hadoop113 software]$ sudo systemctl start clickhouse-server
### 或者
[bd@hadoop113 software]$ sudo clickhouse start

## 三台机器上关闭开机自启(测试才会关闭,生产环境不能关闭)
[bd@hadoop113 software]$ sudo systemctl disable clickhouse-server

## 使用 client 连接 server,-m :可以在命令窗口输入多行命令
[bd@hadoop113 software]$ clickhouse-client -m
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值