探索GitHub顶级项目:ClickHouse在Red Hat Enterprise Linux 9平台的实战应用

云信安装大师
90
AI 质量分
10 5 月, 2025
2 分钟阅读
0 阅读

探索GitHub顶级项目:ClickHouse在Red Hat Enterprise Linux 9平台的实战应用

引言

ClickHouse是Yandex开源的列式数据库管理系统(DBMS),专为在线分析处理(OLAP)设计,以其惊人的查询速度闻名。作为GitHub上最受欢迎的数据库项目之一,它在大数据分析领域占据重要地位。本文将带你在Red Hat Enterprise Linux 9(RHEL9)上完成ClickHouse的安装、配置和基础使用。

准备工作

环境要求

  • Red Hat Enterprise Linux 9系统
  • 至少4GB内存(生产环境建议16GB以上)
  • 20GB可用磁盘空间
  • root或sudo权限

前置知识

  • 基本的Linux命令行操作
  • SQL基础知识(非必须但有帮助)

详细安装步骤

步骤1:添加ClickHouse官方仓库

代码片段
# 导入GPG密钥
sudo rpm --import https://repo.clickhouse.com/CLICKHOUSE-KEY.GPG

# 添加官方仓库配置
sudo tee /etc/yum.repos.d/clickhouse.repo <<EOL
[clickhouse-stable]
name=ClickHouse Stable Repository
baseurl=https://repo.clickhouse.com/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://repo.clickhouse.com/CLICKHOUSE-KEY.GPG
EOL

# 更新yum缓存
sudo dnf makecache

原理说明
rpm --import:导入GPG密钥确保软件包来源可信
tee命令:将仓库配置写入/etc/yum.repos.d目录下的clickhouse.repo文件
dnf makecache:刷新软件包元数据缓存

步骤2:安装ClickHouse服务器和客户端

代码片段
# 安装主程序包(包含服务器和客户端)
sudo dnf install -y clickhouse-server clickhouse-client

# (可选)安装额外的工具包
sudo dnf install -y clickhouse-common-static clickhouse-keeper

实践经验
clickhouse-server是核心服务程序包,必须安装
clickhouse-client提供命令行交互界面,建议安装方便测试

步骤3:启动ClickHouse服务并设置开机自启

代码片段
# 启动服务并设置开机自启(使用systemd)
sudo systemctl enable clickhouse-server --now

# 检查服务状态(应显示active/running)
sudo systemctl status clickhouse-server

# (可选)查看日志确认启动情况(按Ctrl+C退出)
journalctl -u clickhouse-server -f

注意事项
– RHEL9使用systemd管理服务,–now参数表示立即启动并设置开机自启
– ClickHouse默认监听8123端口(http)和9000端口(native protocol)

ClickHouse基础使用实战

示例1:连接到ClickHouse并创建测试数据库

代码片段
# 使用客户端连接本地服务器(默认无密码)
clickhouse-client --host localhost --port 9000 --user default

# (进入交互式CLI后执行以下SQL语句)
CREATE DATABASE IF NOT EXISTS test_db;

SHOW DATABASES;

USE test_db;

代码解释
--host指定连接的主机地址,localhost表示本机
--port指定TCP协议端口,默认9000
CREATE DATABASE语句创建名为test_db的数据库,IF NOT EXISTS避免重复创建报错

示例2:创建表并导入数据实战

代码片段
-- (在clickhouse-client中继续执行)

-- Step1: 创建测试表(采用MergeTree引擎)
CREATE TABLE test_db.user_activity (
    user_id UInt32,
    event_date Date,
    event_type String,
    duration_sec UInt32,
    url String,
    ip String DEFAULT '127.0.0.1'
) ENGINE = MergeTree()
ORDER BY (event_date, user_id);

-- Step2: 插入测试数据(多行插入语法)
INSERT INTO test_db.user_activity VALUES 
    (101, '2023-01-15', 'click', 5, '/home'),
    (102, '2023-01-15', 'view', 30, '/products'),
    (101, '2023-01-16', 'purchase', NULL, '/checkout'),
    (103, '2023-01-17', 'login', NULL, '/login');

-- Step3: (批量导入方式)从CSV文件导入数据(先退出client)
quit;

# echo "104,'2023-01-18','logout',NULL,'/logout'" > /tmp/data.csv 

clickhouse-client --query "
INSERT INTO test_db.user_activity FORMAT CSV" < /tmp/data.csv 

# Step4: 查询验证数据是否完整 
clickhouse-client --query "SELECT count() FROM test_db.user_activity"

关键点解析

原创 高质量