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

clickhouse基础概念及集群部署

一. 简述: 

   ClickHouse 是一款高性能列式存储数据库,专为海量数据的实时分析场景设计。它以极致的查询速度、高效的存储利用率和强大的并行处理能力著称,广泛应用于日志分析、用户行为分析、业务监控等大数据分析领域。

  1. 核心特性:

    a). 列式存储:传统行式数据库(如 MySQL)按行存储数据,适合增删改查;ClickHouse 按列存储,同一列数据连续存放,可大幅减少 IO 量(仅读取查询所需列),且相同类型数据压缩率更高(通常比行式存储高 5-10 倍)。

   b).  高效的查询性能:基于向量执行引擎,单次处理一批数据(而非单条),减少函数调用开销;查询会被拆分为多个子任务,在多个 CPU 核心上并行执行;内置大量优化的数学、字符串等函数,支持复杂计算高效执行。

   c).  支持实时写入更新:提供 INSERT 语句支持高吞吐写入(每秒数十万条),数据写入后立即可见。

   d).  丰富的表引擎:表引擎决定数据存储方式、索引策略和查询特性,核心引擎包括: 

  • MergeTree:常用引擎,支持分区、排序、TTL、副本和分片,适合海量历史数据存储。

  • ReplacingMergeTree:在合并分区时自动去重,适合处理重复数据。

  • SummingMergeTree:合并时自动聚合数据,适合预计算场景。

  • Memory:内存表,查询极快但数据不持久,适合临时计算。

  2. 分布式架构支持: 

      原生支持集群部署,通过分片(数据拆分到不同节点)和副本(数据冗余备份)实现高可用和水平扩展,用户无需关心底层存储分布。

  3. 使用场景:

        a). 日志与指标分析:如服务器日志、应用程序埋点数据的实时查询。

        b). 用户行为分析:分析用户在网站 / App 上的点击、浏览等行为,生成漏斗图、留存率等报表。

        c). 业务监控与仪表盘:实时监控订单量、支付成功率等关键指标,支持毫秒级响应的仪表盘展示。

        d). 时序数据存储:存储物联网设备的传感器数据(如温度、湿度),支持按时间范围快速查询。

三. 服务部署: 

  1.  检查当前CPU是否支持SSE 4.2:

#grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
SSE 4.2 supported

2. 安装部署:

#yum install yum-utils
#rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG
#yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64
#yum install clickhouse-server clickhouse-client(当无法联网时,可通过https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/下载,只需要clickhouse-client,clickhouse-server,clickhouse-common-static三个包)

3. 配置clickhouse:/etc/clickhouse-server/config.xml

#vim /etc/clickhouse-server/config.xml
<!-- 监听地址,默认只允许本地访问,改为0.0.0.0允许外部访问 -->
<listen_host>0.0.0.0</listen_host><!-- 数据存储路径(默认在/var/lib/clickhouse/) -->
<path>/var/lib/clickhouse/</path><!-- 日志路径 -->
<log>/var/log/clickhouse-server/clickhouse-server.log</log>#设置密码
1. 生成加密密码: 
echo -n "your_password" | sha256sum | awk '{print $1}'2. 编辑配置
#vim /etc/clickhouse-server/users.xml
<users><default><!-- 明文密码(测试环境) --><password>your_password</password><!-- 或加密密码(生产环境,通过clickhouse-client生成) --><!-- <password_sha256_hex>哈希值</password_sha256_hex> --><networks><ip>::/0</ip> <!-- 允许所有IP访问 --></networks></default>
</users>

 4. 启动服务: 

# 启动服务
sudo systemctl start clickhouse-server

5.  功能验证:

# 本地连接(默认无密码)
clickhouse-client-- 创建测试数据库
CREATE DATABASE IF NOT EXISTS test;-- 创建表
CREATE TABLE test.logs (timestamp DateTime,level String,message String) ENGINE = MergeTree() ORDER BY timestamp;-- 插入数据
INSERT INTO test.logs VALUES (now(), 'INFO', 'ClickHouse installed successfully');-- 查询数据
SELECT * FROM test.logs;

三. 关于集群部署

   clickhouse 在21.12版本之前,需要依赖zookeeper进行节点协调等任务, 从21.12起,引入了clickhouse-keeper,用来替代zookeeper。 部署多个节点后,配置集群元数据: 

#vim /etc/clickhouse-server/config.xml<remote_servers><my_cluster> <!-- mycluster --><shard> <!-- 分片1 --><replica><host>node1</host><port>9000</port></replica></shard><shard> <!-- 分片2 --><replica><host>node2</host><port>9000</port></replica></shard><shard> <!-- 分片2 --><replica><host>node2</host><port>9000</port></replica></shard></my_cluster>
</remote_servers>#重启所有节点,通过 SELECT * FROM system.clusters 验证集群状态。

 -------------------------------------------------------------------------------------

                         深耕运维行业多年,擅长运维体系建设,方案落地。欢迎交流!

                                                     V: ywjw996

                                                    《 运维经纬 》

http://www.dtcms.com/a/328221.html

相关文章:

  • 疏老师-python训练营-Day43复习日
  • Qwen-Image(阿里通义千问)技术浅析(一)
  • 谷歌 Web Guide 如何重塑搜索排名及其 SEO 影响
  • python技巧:控制转台的2个坑。
  • 从关键词到智能决策:孟庆涛如何用GEO重塑AI时代的搜索优化范式
  • 2025年受自适应差分进化-无人机路径规划的统一元启发式框架-附Matlab完整代码
  • 云计算核心技术
  • 附表B 正则表达式符号列表
  • Java缓冲流
  • Spring面试宝典
  • FPGA自学——FIFO缓存器
  • 游戏中角色持枪:玩家操控角色,角色转向时枪也要转向
  • 西门子PLC跨代通讯实战:S7-200通过以太网模块与S7-1500数据交互
  • PFC是什么
  • 【数模技巧】使用python将.xlsx文件转换为CSV文件
  • 大模型-QAT介绍
  • Product Hunt 每日热榜 | 2025-08-12
  • DeepSeek-R1-0528 推理模型完整指南:领先开源推理模型的运行平台与选择建议
  • 论区间dp:常用模型(附极角排序教程)
  • 项目实战2——LAMP_LNMP实践
  • @系统管理-WindowsLinux-补丁管理工具
  • SpringBoot项目部署
  • 浪潮推出首个“人工智能工厂”,工业化模式加速技术落地
  • RS485+DMA+空闲中断+HAL库收发数据
  • 无人机智能返航模块技术分析
  • element-table的合并行的使用-指定某些字段允许相邻数据能进行合并,通过传递的key键进行判断-公共方法
  • LaTeX 教程:从入门到专业的排版模板
  • UGUI源码剖析(6):遮罩的“魔法”与“算法”——从C#到Shader,彻底揭示Mask与RectMask2D的原理
  • 13.深度学习——Minst手写数字识别
  • git config的配置全局或局部仓库的参数: local, global, system