当前位置: 首页 > 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就正常启动了

相关文章:

ClickHouse入门详解

ClickHouse基础部分详解 一、ClickHouse简介二、ClickHouse单机版安装2.1、ClickHouse安装前准备环境2.2、ClickHouse单机安装2.3、ClickHouse一些默认路径2.4、ClickHouse端口说明 三、ClickHouse数据类型四、ClickHouse的表引擎4.1 MergeTree4.1.1 partition by 分区 五、Cli…...

javaweb笔记2

JSP 1、在webapp的根目录下新建一个index.jsp文件,访问以下地址&#xff1a; http://localhost:8080/webappName/index.jsp 实际上访问这个index.jsp文件&#xff0c;底层执行的是&#xff1a;index_jsp.class这个程序。 这个index.jsp会被tomcat翻译成index_jsp.j…...

【IIS搭建网站】本地电脑做服务器搭建web站点并公网访问「内网穿透」

文章目录 1.前言2.Windows网页设置2.1 Windows IIS功能设置2.2 IIS网页访问测试 3. Cpolar内网穿透3.1 下载安装Cpolar3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5.结语 1.前言 在网上各种教程和介绍中&#xff0c;搭建网页都会借助各种软件的帮助&#xff0c;比如…...

算法训练day2:哈希表

哈希表理论基础 哈希表是根据关键码的值而直接进行访问的数据结构。 当我们遇到了要快速判断一个元素是否出现集合里的时候&#xff0c;就要考虑哈希法。 但是哈希法也是牺牲了空间换取了时间&#xff0c;因为我们要使用额外的数组&#xff0c;set或者是map来存放数据&#…...

Git——利用SSH密钥本地仓库上传远程GitHub库

文章目录 1、前言2、详细步骤2.1 创建密钥2.2 进入密钥文件并复制2.3 在GitHub上添加密钥2.4 回到本地仓库文件夹&#xff0c;连接GitHub并上传 3. 结语 1、前言 现在想要从本地设备将本地仓库上传到GitHub上需要用到SSH密钥&#xff0c;接下来讲解大致的步骤&#xff0c;本文默…...

一起读源码 —— Fastjson 的核心方法及其实现原理

源码介绍 Fastjson 是阿里巴巴开源的一个 Java 工具库&#xff0c;它常常被用来完成 Java 的对象与 JSON 格式的字符串的相互转化。 此文读的源码是撰写此文时 Fastjson 的最新的发布版本&#xff0c;即 1.2.83 下载源码 请前去 github 找到 release 最新版下载后解压&…...

Python实现批量图片下载及去重处理

背景 在爬虫应用开发中&#xff0c;常常需要批量下载图片&#xff0c;并对图片进行去重处理。Python 是一种非常流行的编程语言&#xff0c;也是开发爬虫应用的首选&#xff0c;本文将介绍如何使用 Python 下载图片&#xff0c;并对下载的图片进行去重处理。 内容 首先&…...

【QA】Python代码调试之解决Segmentation fault (core dumped)问题

Python代码调试之解决Segmentation fault 问题 问题描述排查过程1. 定位错误&#xff0c;2. 解决办法 参考资料 问题描述 Python3执行某一个程序时&#xff0c;报Segmentation fault (core dumped)错&#xff0c;且没有其他任何提示&#xff0c;无法查问题。 Segmentation fa…...

C++ 迭代器之旅(Journey of Iterators)

C 迭代器之旅&#xff08;Journey of Iterators&#xff09; 一、引言&#xff08;Introduction&#xff09;C Iterator模板库简介&#xff08;Overview of C Iterator Template Library&#xff09;Iterator的重要性和作用&#xff08;The Importance and Role of Iterators&a…...

使用全球融合CDN的10大优势

根据预估&#xff0c;今年的全球内容交付网络&#xff08;CDN&#xff09;市场预计将达到424亿美元。而由于移动应用程序的激增和人工智能尤其是ChatGPT等相关领域的快速发展将进一步带来CDN市场的快速增长&#xff0c;可以说全球CDN的黄金时代才刚开始。 融合CDN和多CDN战略是…...

前端学习:HTML图像、表格、列表

目录 图像 一、图像标签和源属性(Src) 二、替换文本属性(Alt) 三、设置图片样式基本属性 四、图像标签 表格 一、标签 补充: 二、表格的表头 三、表格常用标签和属性 标签 属性 列表 一、无序列表 二、有序列表 三、定义列表 四、列表常用标签属性 图像 一、…...

202305读书笔记|《因思念而沉着》——任何赞美都是身外之物唯自由可随身携带

《因思念而沉着》作者巴哑哑&#xff0c;忘了是什么时候加入的书架&#xff0c;昨天下班地铁上读完的书。是美的&#xff01; 部分节选如下&#xff1a; 羽叶茑萝举着熄灭的花青色的小枣落了一地所以哭泣沾染上了你的脸 在没落下 当我们开始生活 就是开始患上了眼疾你独自悲伤…...

M1 M2上能安装上Autocad 2024 Mac 中文版吗 autocad m1 m2版本有啦 终于支持Ventura 13x了

AutoCAD是一款强大的工具&#xff0c;适合于各种领域的设计和绘图。它具有二维图形和三维建模功能、多种文件格式支持、自定义命令和样式、批处理和脚本等特点&#xff0c;可以帮助用户实现高质量的设计和建模。同时&#xff0c;还支持云端存储和共享&#xff0c;方便用户随时随…...

【题解】P4055 [JSOI2009] 游戏

link 题目大意 题目说得比较清楚。 题解 前置知识&#xff1a;二分图最大匹配、基础博弈论。 每个点只能走一次的四联通点阵&#xff0c;可以想到二分图匹配。 将其套路地奇偶分点&#xff0c;相邻两点连边&#xff08;显然不能为 #&#xff09;。 先求一个最大匹配。 …...

P1020 [NOIP1999 普及组] 导弹拦截

题目描述 某国为了防御敌国的导弹袭击&#xff0c;发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷&#xff1a;虽然它的第一发炮弹能够到达任意的高度&#xff0c;但是以后每一发炮弹都不能高于前一发的高度。某天&#xff0c;雷达捕捉到敌国的导弹来袭。由于该系统…...

Makefile学习

什么是Makefile 使用 GCC 编译器在 Linux 进行 C 语言编译&#xff0c;通过在终端执行 gcc 命 令来完成 C 文件的编译&#xff0c;如果我们的工程只有一两个 C 文件还好&#xff0c;需要输入的命令不多&#xff0c;当文件有几十、上百甚至上万个的时候用终端输入 GCC 命令的方…...

2.4 随机变量函数的分布

学习目标&#xff1a; 学习随机变量函数的分布&#xff0c;我会采取以下步骤&#xff1a; 熟悉随机变量的基本概念和分布&#xff1a;在学习随机变量函数的分布之前&#xff0c;需要先掌握随机变量的基本概念和分布&#xff0c;包括离散型随机变量和连续性随机变量的概率密度…...

数据结构【一】:前缀表达式与后缀表达式的区别

在早期计息机系统中&#xff0c;由于没有括号规定运算顺序&#xff0c;因此&#xff0c;依靠出栈和入栈两种方式&#xff0c;限定元素和符号之间的关系确定了前缀表达式和后缀表达式两种运算方式&#xff0c;中缀表达式即为普通的运算表达式&#xff1b;注意&#xff0c;在栈结…...

搭建 PostgreSQL

端口&#xff1a;5432 代理备份端口&#xff1a;6432 下载 postgresql-15.0-1-windows-x64 乱码显示 配置环境变量 PGDATA数据目录位置 找到postgresql.conf文件&#xff0c; 修改参数 lc_messagesUTF8 max_connections 1000 shared_buffers4GB work_mem8MB 问题&#xff1a…...

Nmap入门到高级【第四章】

预计更新Nmap基础知识 1.1 Nmap简介和历史 1.2 Nmap安装和使用方法 1.3 Nmap扫描技术和扫描选项 Nmap扫描技术 2.1 端口扫描技术 2.2 操作系统检测技术 2.3 服务和应用程序检测技术 2.4 漏洞检测技术 Nmap扫描选项 3.1 扫描类型选项 3.2 过滤器选项 3.3 探测选项 3.4 输出选项…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...