ClickHouse 的安装与基本配置

ClickHouse 是一款高性能的列式数据库管理系统,特别适合用于大数据分析。以下是 ClickHouse 的安装与基本配置步骤,涵盖了在常见平台(如 Linux)上的安装和基础配置。

1. 安装 ClickHouse

在 Linux (Ubuntu/Debian) 上安装

在 Ubuntu 或 Debian 上安装 ClickHouse 非常简单,可以通过官方的 APT 仓库安装。

  1. 更新系统包管理器

    bash 复制代码
    sudo apt-get update
  2. 安装 HTTPS 传输工具

    bash 复制代码
    sudo apt-get install apt-transport-https ca-certificates dirmngr
  3. 添加 ClickHouse APT 源

    bash 复制代码
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4
    echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee /etc/apt/sources.list.d/clickhouse.list
  4. 安装 ClickHouse Server 和客户端

    bash 复制代码
    sudo apt-get update
    sudo apt-get install clickhouse-server clickhouse-client
  5. 启动 ClickHouse 服务

    bash 复制代码
    sudo service clickhouse-server start
  6. 检查 ClickHouse 服务状态

    bash 复制代码
    sudo service clickhouse-server status
在 CentOS/RHEL 上安装

对于 CentOS/RHEL 系统,也可以通过官方 RPM 仓库安装 ClickHouse。

  1. 添加 ClickHouse YUM 源

    bash 复制代码
    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
  2. 安装 ClickHouse Server 和客户端

    bash 复制代码
    sudo yum install -y clickhouse-server clickhouse-client
  3. 启动 ClickHouse 服务

    bash 复制代码
    sudo service clickhouse-server start
  4. 检查服务状态

    bash 复制代码
    sudo service clickhouse-server status

2. 配置 ClickHouse

ClickHouse 的默认配置文件位于 /etc/clickhouse-server/config.xml,其中包含了所有服务的配置选项。以下是一些常见的配置调整:

2.1 配置监听地址

默认情况下,ClickHouse 监听所有网络接口的 8123(HTTP)和 9000(TCP)端口。如果需要更改绑定地址,可以在配置文件中修改。

  • 编辑 /etc/clickhouse-server/config.xml,找到 <listen_host> 部分:

    xml 复制代码
    <listen_host>::</listen_host> <!-- 默认监听所有接口 -->

可以将 :: 改为特定的 IP 地址,如 127.0.0.1 以限制为本地访问。

2.2 配置存储路径

ClickHouse 的数据默认存储在 /var/lib/clickhouse/ 目录下。你可以修改数据存储路径来存储在其他磁盘或分区。

  • 编辑 /etc/clickhouse-server/config.xml 文件中的 <path> 标签:

    xml 复制代码
    <path>/your/custom/path/</path>
2.3 配置日志文件路径

ClickHouse 的日志文件默认存放在 /var/log/clickhouse-server/ 目录中,可以修改为其他路径。

  • 修改 <logger> 部分:

    xml 复制代码
    <logger>
        <log>/your/custom/path/clickhouse-server.log</log>
        <errorlog>/your/custom/path/clickhouse-server.err.log</errorlog>
        <size>1000M</size>
        <count>10</count>
    </logger>
2.4 配置用户权限

默认的用户名为 default,无密码。如果你想配置用户权限,可以在 /etc/clickhouse-server/users.xml 文件中进行修改:

  • 配置用户:

    xml 复制代码
    <users>
        <default>
            <password>your_password</password> <!-- 设置密码 -->
            <networks>
                <ip>::/0</ip> <!-- 默认允许所有 IP 访问 -->
            </networks>
            <profile>default</profile> <!-- 分配权限 -->
        </default>
    </users>

3. 使用 ClickHouse 客户端

安装和配置完成后,可以通过 ClickHouse 客户端连接并执行查询。

  1. 连接 ClickHouse

    bash 复制代码
    clickhouse-client
  2. 创建数据库

    sql 复制代码
    CREATE DATABASE mydb;
  3. 创建表

    sql 复制代码
    CREATE TABLE mydb.mytable (
        id UInt32,
        name String,
        age UInt8
    ) ENGINE = MergeTree()
    ORDER BY id;
  4. 插入数据

    sql 复制代码
    INSERT INTO mydb.mytable VALUES (1, 'Alice', 30), (2, 'Bob', 25);
  5. 查询数据

    sql 复制代码
    SELECT * FROM mydb.mytable;

4. 常见性能优化配置

ClickHouse 是为高性能设计的,但你仍然可以通过一些配置来进一步优化性能。

4.1 调整最大并行查询数

可以调整最大并行查询数来控制并发量:

  • 修改 /etc/clickhouse-server/config.xml 文件中的 <max_concurrent_queries>

    xml 复制代码
    <max_concurrent_queries>100</max_concurrent_queries>
4.2 优化 MergeTree 引擎参数

MergeTree 是 ClickHouse 中最常用的表引擎,提供了高效的列式存储和查询性能。以下是一些常用的 MergeTree 参数调整:

  • min_bytes_for_wide_part: 定义使用宽数据部分的最小文件大小。

  • index_granularity: 设置索引粒度,以平衡查询性能和存储空间。

    sql 复制代码
    CREATE TABLE mytable (
        id UInt32,
        name String
    ) ENGINE = MergeTree()
    ORDER BY id
    SETTINGS index_granularity = 8192;
4.3 压缩设置

可以通过配置文件中的压缩设置来优化存储效率:

  • /etc/clickhouse-server/config.xml 中的 <compression> 节点中添加配置:

    xml 复制代码
    <compression>
        <case>
            <min_part_size>10000000000</min_part_size>
            <min_part_size_ratio>0.01</min_part_size_ratio>
            <method>zstd</method>
        </case>
    </compression>

5. 启动和管理服务

  • 启动服务

    bash 复制代码
    sudo service clickhouse-server start
  • 停止服务

    bash 复制代码
    sudo service clickhouse-server stop
  • 重启服务

    bash 复制代码
    sudo service clickhouse-server restart

6. 检查服务状态:

bash 复制代码
sudo service clickhouse-server status

这一步能帮助你确认 ClickHouse 服务是否正常运行,出现问题时可以查看日志进行排查。

6. 安全设置

如果 ClickHouse 是对外提供服务,建议进行以下安全设置:

  • 防火墙配置:仅允许可信任的 IP 地址访问 ClickHouse 的 HTTP 和 TCP 端口(默认 8123 和 9000)。

    bash 复制代码
    sudo ufw allow from [your-trusted-ip] to any port 8123
    sudo ufw allow from [your-trusted-ip] to any port 9000
  • 启用 SSL:通过配置 ClickHouse 支持 HTTPS 安全访问。你可以在配置文件中设置 SSL 证书路径。

    xml 复制代码
    <https_port>8443</https_port>
    <openSSL>
        <server>
            <certificateFile>/path/to/certificate.crt</certificateFile>
            <privateKeyFile>/path/to/private.key</privateKeyFile>
        </server>
    </openSSL>

这样,你就能通过 HTTPS 安全地访问 ClickHouse。

总结

ClickHouse 是一款高效的列式数据库,安装和配置都比较简单。通过调整配置文件和合理设置用户权限,可以确保 ClickHouse 在不同环境下的高性能运行。

相关推荐
Hello.Reader19 小时前
深入理解 ClickHouse 的性能调优与最佳实践
大数据·数据仓库·clickhouse·数据分析
尘世中迷途小码农1 天前
ClickHouse总结
clickhouse
goTsHgo1 天前
Clickhouse如何完全保证数据的去重
数据库·clickhouse
goTsHgo1 天前
从底层原理上理解ClickHouse 中的稀疏索引
数据库·clickhouse
goTsHgo3 天前
从底层原理上解释clickhouse查询为什么快
数据库·clickhouse
武子康3 天前
大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge
java·大数据·clickhouse·flink·spark·scala
知行合一。。。3 天前
ClickHouse--19-- 分布式 GLOBAL IN 和 GLOBAL JOIN
分布式·clickhouse
goTsHgo4 天前
clickhouse适用的业务场景
数据库·clickhouse
武子康4 天前
大数据-135 - ClickHouse 集群 - 数据类型 实际测试
java·大数据·clickhouse·架构·flink·spark
我的K84095 天前
ClickHouse的安装配置+DBeaver远程连接
数据库·clickhouse