当前位置: 首页 > news >正文

ClickHouse入门详解

ClickHouse基础部分详解

  • 一、ClickHouse简介
  • 二、ClickHouse单机版安装
    • 2.1、ClickHouse安装前准备环境
    • 2.2、ClickHouse单机安装
    • 2.3、ClickHouse一些默认路径
    • 2.4、ClickHouse端口说明
  • 三、ClickHouse数据类型
  • 四、ClickHouse的表引擎
    • 4.1 MergeTree
      • 4.1.1 partition by 分区
  • 五、ClickHouse遇到的一些奇葩问题
    • 1、ClickHouse服务起不来

一、ClickHouse简介

对于其他乱起八糟的简介,我就不写了,只写干货.
ClickHouse总结一个字:快
1、ClickHouse是列式数据库,特别适合大数据量对列的聚合,计数,求和等统计操作原因优于行式存储, 数据量可以大到10亿到百亿级别。
2、真正的列式数据库管理系统,ClickHouse不单单是一个数据库, 它是一个数据库管理系统。因为它允许在运行时创建表和数据库、加载数据和运行查询,而无需重新配置或重启服务。
3、常见列式数据库HBase,BigTable,Cassandra,HyperTable。在这些列式数据库中,你可以得到每秒数十万的吞吐能力,但是无法得到每秒几亿行的吞吐能力。
4、数据压缩,由于某一列的数据类型都是相同的,针对于数据存储更容易进行数据压缩,每一列选择更优的数据压缩算法,大大提高了数据的压缩比重,由于数据压缩比更好,一方面节省了磁盘空间,另一方面对于 cache 也有了更大的发挥空间。
5、ClickHouse会使用服务器上一切可用的资源,从而以最自然的方式并行处理大型查询。高性能自然需要高配服务器。

点击进入: ClickHouse官网文档


二、ClickHouse单机版安装

2.1、ClickHouse安装前准备环境


2.1.1、Centos 取消打开文件数限制

vim /etc/security/limits.conf
vim /etc/security/limits.d/20-nproc.conf
##编辑上面两个文件,添加下面内容,记得两个文件都添加,在文件末尾添加
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

2.1.2、安装ClickHouse依赖环境

yum install -y libtool
yum install -y *unixODBC*

2.1.3、CentOS 取消 SELINUX

#修改/etc/selinux/config 中的 SELINUX=disabled
vim /etc/selinux/config

2.2、ClickHouse单机安装


2.2.1、安装包准备

可自行去官网把下图中的四个安装包下载下来, 下载地址:http://repo.red-soft.biz/repos/clickhouse/stable/el7/

在这里插入图片描述

2.2.2、安装

上传到centos中的某一目录中,在目录中执行如下命令。
rpm -ivh *.rpm
安装过程中,出现下面情况,是让你输入默认密码的,自己随便输入,一般输入root即可。也可以不设置密码,直接按回车键即可

在这里插入图片描述

查看安装情况

sudo rpm -qa|grep clickhouse 

2.2.3、修改配置文件

把 <listen_host>::</listen_host> 的注释打开,这样的话才能让 ClickHouse 被除本机以外的服务器访问

vim /etc/clickhouse-server/config.xml

2.2.4、启动clickhouse

注意,启动clickhouse是开机自启的。

systemctl start clickhouse-server
#使用该命令,是禁制clickhouse开机自启,不过一般我们都是需要开机自启,
#所以不执行下面这条命令了
systemctl disable clickhouse-server

2.2.4、终端链接clickhouse

#如果在上面没设置默认密码,执行clickhouse-client -m即可
clickhouse-client -m
#如果在上面设置了默认密码,执行clickhouse-client --password,然后输入密码,就可以进入了
clickhouse-client --password

2.3、ClickHouse一些默认路径

bin/     ====>  /usr/bin/    #可执行文件路径
conf/   ====> /etc/clickhouse-server     #配置文件路径
lib/      ====> /var/lib/clickhouse      #数据存放路径
log/     ====> /var/log/clickhouse       #日志路径

2.4、ClickHouse端口说明

1、9000是clickhouse-client使用的端口,一般咱们通过命令行链接,使用9000端口。

2、8123是HTTP连接clickhouse使用的端口,一般用第三方工具,比如java客户端,或者DBever客户端连接,都用8123端口。

3、记得一定要关闭centos防火墙哦。
#查看防火墙状态
systemctl status firewalld.service
#暂时关闭防火墙
systemctl stop firewalld.service
#永久关闭防火墙
systemctl disable firewalld.service

三、ClickHouse数据类型

和其他语言的数据类型都相似,我就不一一说了,官方文档上写的很好,参考下官网: https://clickhouse.com/docs/zh/sql-reference/data-types

四、ClickHouse的表引擎

4.1 MergeTree

MergeTree 引擎是ClickHouse中最常用的,地位相当于mysql的innodb,下面介绍下MergeTree引擎的一些特性

4.1.1 partition by 分区

分区是ClickHouse中非必选的属性。

分区后,面对涉及跨分区的查询统计,ClickHouse 会以分区为单位并行处理, 即一个线程处理一个分区内的数据,说明ClickHouse在高性能的同时,是需要高服务器的

分区粒度根据业务特点决定,不宜过粗或过细。一般选择按天分区,也可以指定为Tuple(),以单表一亿数据为例,分区大小控制在10-30个为最佳。

那些有相同分区表达式值的数据片段才会合并。这意味着 你不应该用太精细的分区方案(超过一千个分区)。否则,会因为文件系统中的文件数量过多和需要打开的文件描述符过多,导致 SELECT 查询效率不佳。

还有就是一般我们都是使用的是日期作为分区键,同一分区内有序,不同分区不能保证有序。

五、ClickHouse遇到的一些奇葩问题

1、ClickHouse服务起不来

开机后发现clickHouse服务起不来,具体查看了下日志信息,如下图所示:

在这里插入图片描述
日志说是/var/lib/clickhouse/store/f66/f66f1f2e-cc4d-47ea-b33d-f0cabf63aa63/202304_93_93_0目录损坏了

处理方法:

进入到损坏的目录 cd /var/lib/clickhouse/store 执行mv f66/ f66_bak命令,不用担心/f66目录下的文件,clickhouse会重新生成个f66目录的,然后clickhouse就正常启动了

http://www.lryc.cn/news/60516.html

相关文章:

  • javaweb笔记2
  • 【IIS搭建网站】本地电脑做服务器搭建web站点并公网访问「内网穿透」
  • 算法训练day2:哈希表
  • Git——利用SSH密钥本地仓库上传远程GitHub库
  • 一起读源码 —— Fastjson 的核心方法及其实现原理
  • Python实现批量图片下载及去重处理
  • 【QA】Python代码调试之解决Segmentation fault (core dumped)问题
  • C++ 迭代器之旅(Journey of Iterators)
  • 使用全球融合CDN的10大优势
  • 前端学习:HTML图像、表格、列表
  • 202305读书笔记|《因思念而沉着》——任何赞美都是身外之物唯自由可随身携带
  • M1 M2上能安装上Autocad 2024 Mac 中文版吗 autocad m1 m2版本有啦 终于支持Ventura 13x了
  • 【题解】P4055 [JSOI2009] 游戏
  • P1020 [NOIP1999 普及组] 导弹拦截
  • Makefile学习
  • 2.4 随机变量函数的分布
  • 数据结构【一】:前缀表达式与后缀表达式的区别
  • 搭建 PostgreSQL
  • Nmap入门到高级【第四章】
  • c++正则表达式及其使用,超级详细
  • 【LeetCode: 剑指 Offer II 099. 最小路径之和 | 暴力递归 | DFS =>记忆化搜索=>动态规划】
  • Python OpenCV 计算机视觉:6~7
  • LabView中数组的使用2-1
  • Android 10.0 系统systemui下拉通知栏的通知布局相关源码分析
  • 研读Rust圣经解析——Rust learn-3(变量与可变性,数据类型)
  • 接口的多继承多实现
  • 腾讯-iOS面试题-答案
  • SQL Server内存架构
  • 有哪些功能强大,但是很小众的Python库呢?
  • SpringBoot设计了哪些可拓展的机制?