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

2023-09-20 00:43:32

clickhouse学习笔记

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



clickhouse的特点

1.列式存储

以下面表为例

idnameage
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

在这里插入图片描述
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

在这里插入图片描述

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

在这里插入图片描述

3.安装依赖

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

4. CentOS 取消 SELINUX

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

在这里插入图片描述
查看是否生效
因为没有重启,所以默认是生效的
在这里插入图片描述
若在生产环境中需要改变状态,则可以启用临时生效
假设状态为开,可以临时关闭。若现状态为关,想要开启必须重启!

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

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

5.上传文件

在/opt/install目录下创建ck文件夹来存放clickhouse四个安装包
在这里插入图片描述
将安装包上传至/opt/install/ck
在这里插入图片描述

5.安装

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

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

在这里插入图片描述

6.修改配置文件

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

在这里插入图片描述

7.启动服务

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

在这里插入图片描述

8.client 连接 server

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

在这里插入图片描述

更多推荐

【网络技术】计算机网络介绍

写在前面计算机网络是指将多台计算机连接起来,使它们能够相互通信和共享资源的系统。它是现代计算机科学中的重要分支之一,为全球范围内的信息交流和数据传输提供了基础。本文将介绍计算机网络的基础概念、体系结构、协议、常见问题等的知识。一、基本介绍1.计算机网络是什么?计算机网络是由若干台计算机和与之相连的通信设备组成的系统,这

记录使用Docker Compose 部署《XAPI项目》遇道的问题及解决方案

《XAPI项目》:GitHub仓库(勿打🚫小破站一个)这篇文章,主要内容是记录使用DockerCompose部署《XAPI项目》遇道的问题及解决方案目录📚本地MySQL数据如何导入到容器内的MySQL中❎解决报错:docker-xapi-backend-1|q.GetUserInfoByUserAccounterr

KMP算法

1.典型例题28.找出字符串中第一个匹配项的下标-力扣(LeetCode)题干:给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。如果needle不是haystack的一部分,则返回-1。示例1:输入:haystack="sadbut

Spring WebFlux使用未加前缀的双通配符模式绕过安全性CVE-2023-34034

文章目录0.前言漏洞漏洞介绍描述1.参考文档2.基础介绍3.解决方案3.1.升级版本4.漏洞修复源码分析5.漏洞利用示例0.前言背景:公司项目扫描到WebFlux中使用"**"作为模式会导致SpringSecurity和SpringWebFlux之间CVE-2023-34034漏洞漏洞高|2023年7月18日|CVE-

LVS+Keepalived群集

LVS+Keepalived群集一、Keepalived实现原理1、原理2、Keepalived体系主要模块及其作用3、Keepalived工具介绍4、合格的集群应该具备的特性二、Keepalived的部署三、LVS+Keepalived高可用集群部署1.部署共享存储2.配置负载调度器(主、备相同)3.配置节点服务器4

2023年亚马逊云科技中国峰会记录

前言有幸抽到了亚马逊云科技中国峰会的门票,恰好又是在上海举行的,并且看预告有很多热点内容,所以就参加了。27日一早就赶到了世博中心,此时已经排起了长队。看来与会者还是蛮多的。整体分为以下几个环节:一.上午的主题演讲二.下午的互动活动三.下午的各种分会场论坛一.主题演讲-面向未来进行构建首个环节,是主题演讲,演讲者是亚马

springboot2整合nacos云服务,配置基本类型和json类型

最近公司要搭建一个配置中心,由于不想自己运维,便选择了云服务,定的是阿里云的nacos服务,即​​​​​​​https://mse.console.aliyun.com/。这里记录一下在springboot2项目中,使用云nacos来做一些基本配置String、int等,和配置json数据映射到java对象中。1云na

Android Kotlin 基础详解

1,基础语法1.1可变变量与不可变变量可以多次赋值的变量是可变变量,用关键字var表示:var<标识符>:<类型>=<初始化值>注意,在kotlin中成员变量不会赋默认值,不像java一样,必须手动添加默认值。varname:String="yuanzhen"name="yuanzhen1"varage:Int=20a

27、Flink 的SQL之SELECT (窗口函数)介绍及详细示例(3)

Flink系列文章1、Flink部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接13、Flink的tableapi与sql的基本概念、通用api介绍及入门示例14、Flink的tableapi与sql之数据类型:内置数据类型以及它们的属性15、Flink

Spring Boot中Tomcat服务器参数解析及高并发控制

SpringBoot中Tomcat服务器参数解析及高并发控制SpringBoot集成了多种服务器,默认使用了Tomcat服务器。在高并发情况下,合理地配置Tomcat服务器参数对于控制请求量和提高系统的稳定性至关重要。本文将解释SpringBoot中涉及Tomcat服务器的一些关键参数,并探讨在高并发情况下如何通过这些

JS中Symbol的介绍

1、引入Symbol类型的背景ES5的对象属性名都是字符串,这容易造成属性名冲突的问题举例:使用别人的模块/对象,又想为之添加新的属性,这就容易使得新属性名与原有属性名冲突2、Symbol类型简介symbol是一种原始数据类型其余原始类型:未定义(undefined)、空值(null)、布尔值(boolean)、字符串

热文推荐