clickhouse学习之路----clickhouse的特点及安装

clickhouse学习笔记

反正都有学不完的技术,不如就学一学clickhouse吧


文章目录

  • clickhouse学习笔记
  • clickhouse的特点
    • 1.列式存储
    • 2. DBMS 的功能
    • 3.多样化引擎
    • 4.高吞吐写入能力
    • 5.数据分区与线程级并行
  • clickhouse安装
    • 1.关闭防火墙
    • 2.CentOS 取消打开文件数限制
    • 3.安装依赖
    • 4. CentOS 取消 SELINUX
    • 5.上传文件
    • 5.安装
    • 6.修改配置文件
    • 7.启动服务
    • 8.client 连接 server


clickhouse的特点

1.列式存储

以下面表为例

id name age
1 张三 18
2 李四 22
3 王五 30

1.采用行式存储时,数据在磁盘上的组织结构为
在这里插入图片描述
2.采用列式存储时,数据在磁盘上的组织结构为1
在这里插入图片描述
显而易见的优点是:
1)对于列的聚合,计数,求和等统计操作原因优于行式存储。
2)由于某一列的数据类型都是相同的,针对于数据存储更容易进行数据压缩,每一列选择更优的数据压缩算法,大大提高了数据的压缩比重。
3)由于数据压缩比更好,一方面节省了磁盘空间,另一方面对于 cache 也有了更大的发挥空间。

2. DBMS 的功能

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

3.多样化引擎

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

4.高吞吐写入能力

ClickHouse 采用类 LSM Tree的结构,数据写入后定期在后台 Compaction。通过类 LSM tree的结构,ClickHouse 在数据导入时全部是顺序 append 写,写入后数据段不可更改,在后台compaction 时也是多个段 merge sort 后顺序写回磁盘。顺序写的特性,充分利用了磁盘的吞吐能力,即便在 HDD 上也有着优异的写入性能。
官方公开 benchmark 测试显示能够达到 50MB-200MB/s 的写入吞吐能力,按照每行100Byte 估算,大约相当于 50W-200W 条/s 的写入速度。

5.数据分区与线程级并行

ClickHouse 将数据划分为多个 partition,每个 partition 再进一步划分为多个 index granularity(索引粒度),然后通过多个 CPU核心分别处理其中的一部分来实现并行数据处理。在这种设计下,单条 Query 就能利用整机所有 CPU。极致的并行处理能力,极大的降低了查询延时。
所以,ClickHouse 即使对于大量数据的查询也能够化整为零平行处理。但是有一个弊端就是对于单条查询使用多 cpu,就不利于同时并发多条查询。所以对于高 qps 的查询业务,ClickHouse 并不是强项。

clickhouse安装

此安装为虚拟机安装

1.关闭防火墙

关闭防火墙:systemctl stopfirewalld
禁用防火墙:systemctl disabled firewalld
查看防火墙状态:systemctl status firewalld

在这里插入图片描述

2.CentOS 取消打开文件数限制

列出所有的参数选项 ulimt -a

clickhouse学习之路----clickhouse的特点及安装_第1张图片
ulimit的作用:
假设一台机器现在有10人登陆,在系统资源没有限制的情况下,一个人又打开500个文件,每个文件有10m,那这个时候系统内存的资源就收到严重的挑战
而实际应用的环境要比这种假设复杂的多,例如在一个嵌入式开发环境中,各方面的资源都是非常紧缺的,对于开启文件描述符的数量,分配堆栈的大小,CPU 时间,虚拟内存大小,等等,都有非常严格的要求。资源的合理限制和分配,不仅仅是保证系统可用性的必要条件,也与系统上软件运行的性能有着密不可分的联系。这时,ulimit 可以起到很大的作用,它是一种简单并且有效的实现资源限制的方式。
常用参数:

ulimit -a 列出所有的参数选项
ulimit -H 设置硬件资源限制
ulimit -S 设置软件资源限制
ulimit -n 设置应许打开文件数

格式:

domain:可以是用户或者用户组 *代表所有
type:可以有两个值,soft 和 hard
item:表示要限定的资源 可以有很多候选值,如 stack(最大堆栈大小),cpu(占用cpu的时间),nofile(最大打开文件数),nproc(最大开的进程数)
例:* hard nofile 100 该行配置语句限定了任意用户所能创建的最大文件数是 100。

修改ulimit参数,配置文件是:/etc/security/limits.conf
[root@hadoop ~]# sudo vim /etc/security/limits.conf

clickhouse学习之路----clickhouse的特点及安装_第2张图片

[root@hadoop ~]# sudo vim /etc/security/limits.d/20-nproc.conf
可能会覆盖/etc/security/limits.conf,所以在该文件中也配置一份

clickhouse学习之路----clickhouse的特点及安装_第3张图片

3.安装依赖

[root@hadoop ~]# yum install -y libtool
[root@hadoop ~]# yum install -y *unixODBC*

4. CentOS 取消 SELINUX

[root@hadoop ~]# vim /etc/selinux/config
SELINUX=disabled

clickhouse学习之路----clickhouse的特点及安装_第4张图片
查看是否生效
因为没有重启,所以默认是生效的
在这里插入图片描述
若在生产环境中需要改变状态,则可以启用临时生效
假设状态为开,可以临时关闭。若现状态为关,想要开启必须重启!

setenforce 0 # 0表示关闭 1 表示开启

上述安装前工作准备好之后,虚拟机重启
官网下载安装包这里选择手动下载安装
链接: https://packages.clickhouse.com/rpm/stable/

5.上传文件

在/opt/install目录下创建ck文件夹来存放clickhouse四个安装包
clickhouse学习之路----clickhouse的特点及安装_第5张图片
将安装包上传至/opt/install/ck
在这里插入图片描述

5.安装

切换目录至opt/install/ck下安装

[root@hadoop ck]# sudo rpm -ivh *.rpm

clickhouse学习之路----clickhouse的特点及安装_第6张图片

6.修改配置文件

[root@hadoop ck]# vim /etc/clickhouse-server/config.xml 
使用 /isten 来查找关键字
将:: 的注释打开,这样的话才能让ClickHouse 被除本机以外的服务器访问

clickhouse学习之路----clickhouse的特点及安装_第7张图片

7.启动服务

[root@hadoop ck]# systemctl start clickhouse-server
[root@hadoop ck]# ps -ef|grep clickhouse #查看进程

clickhouse学习之路----clickhouse的特点及安装_第8张图片

8.client 连接 server

[root@hadoop ck]# clickhouse-client --password 

clickhouse学习之路----clickhouse的特点及安装_第9张图片

你可能感兴趣的:(clickhouse,clickhouse,学习,性能优化)