clickhouse集群部署保姆级教程

news2025/3/11 21:39:37

ClickHouse安装

版本要求

23.8及之后的版本

硬件要求

三台机器

建议配置

  • 磁盘 ssd 500G
  • 内存 32g
  • cpu 16c

最低配置

  • 磁盘 机械硬盘 50G
  • 内存 4g
  • cpu 4c

容量规划

一亿条数据大约使用1TB磁盘容量

参考官方容量推荐

安装包准备

zookeeper安装

zookeeper需要java启动,8版本以上,三台机器都需要执行

解压安装:

yum install -y java

tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz -C /app

配置环境变量:

 vi /etc/profile

添加我们需要的配置信息:

ZOOKEEPER_HOME 为你安装的zookeeper目录

export ZOOKEEPER_HOME=/app/apache-zookeeper-3.9.3-bin
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH

检测生效

source /etc/profile
echo $ZOOKEEPER_HOME

配置zookeeper

创建data目录

mkdir /app/apache-zookeeper-3.9.3-bin/data

修改配置

cd /app/apache-zookeeper-3.9.3-bin/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/app/apache-zookeeper-3.9.3-bin/data
clientPort=2181

server.1=ip1:2888:3888
server.2=ip2:2888:3888
server.3=ip3:2888:3888

为每台机器配置节点id

在机器一上执行:

echo 1 >/app/apache-zookeeper-3.9.3-bin/data/myid

在机器二上执行:

echo 2 >/app/apache-zookeeper-3.9.3-bin/data/myid

在机器三上执行:

echo 3 >/app/apache-zookeeper-3.9.3-bin/data/myid

启动zookeeper

cd /app/apache-zookeeper-3.9.3-bin/bin
sh zkServer.sh start

验证

启动成功后可以随便选择一个节点尝试连接另一个节点验证:

sh zkCli.sh -server ip:2181

clickhouse安装

检查cpu指令集是否支持

执行grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported",返回SSE 4.2 supported
表示检查通过

数据盘挂载

2.1.挂载目录

:::info
clickhouse数据库数据存储目录建议使用挂载目录

挂载目录需要客户提供并完成挂载

示例挂载命令:mount /dev/sdb1 /app

:::

2.2.创建数据目录
mkdir -p /app/clickhouse/data
mkdir -p /app/clickhouse/tmp
2.3.授予目录权限
chown -R clickhouse:clickhouse /app/clickhouse
chmod 755 /app/clickhouse

下载安装包

http://192.168.0.107/clickhouse/rpm

![](https://i-blog.csdnimg.cn/img_convert/422adfdebe8ec469fc4dcd422cf8d1cb.png下载最新安装包(推荐最新版本)

arm版本使用:

  • clickhouse-common-static-xxx.aarch64.rpm
  • clickhouse-server-xxx.aarch64.rpm
  • clickhouse-client-xxx.aarch64.rpm

安装

rpm -ivh clickhouse-common-static-*.rpm clickhouse-server-*.rpm clickhouse-client-*.rpm

# 有提示输入账号的直接回车跳过,后续统一处理

clickhouse配置

默认配置

添加配置/etc/clickhouse-server/config.xml

vim config.xml

<listen_host>0.0.0.0</listen_host>
<timezone>Asia/Shanghai</timezone>

<level>information</level>

修改挂载目录(可选,无挂载目录可不用)

修改数据目录

vim /etc/clickhouse-server/config.xml
路径改为挂载路径即可

6.1 用户管理配置
  • 修改default用户密码为econage123,全部权限,只允许本地登录
  • 添加用户user,密码为econage123,读写权限,bpi服务使用
  • 添加管理用户admin,密码为econage123,读写权限,ddl权限
  • 添加只读用户read,密码为econage123

添加/etc/clickhouse-server/users.d/users.xml,自行修改相关密码

<?xml version="1.0"?>
<clickhouse>
    <!-- See also the files in users.d directory where the settings can be overridden. -->

    <!-- Profiles of settings. -->
    <profiles>
        <!-- Default settings. -->
        <default>
            <max_bytes_before_external_group_by>268435456</max_bytes_before_external_group_by>

            <max_bytes_before_external_sort>268435456</max_bytes_before_external_sort>

            <max_download_threads>1</max_download_threads>

            <input_format_parallel_parsing>0</input_format_parallel_parsing>

            <output_format_parallel_formatting>0</output_format_parallel_formatting>

            <optimize_trivial_insert_select>1</optimize_trivial_insert_select>

        </default>

        <!-- Profile that allows only read queries. -->
        <read>
            <readonly>1</readonly>

            <max_bytes_before_external_group_by>268435456</max_bytes_before_external_group_by>

            <max_bytes_before_external_sort>268435456</max_bytes_before_external_sort>

            <max_download_threads>1</max_download_threads>

            <input_format_parallel_parsing>0</input_format_parallel_parsing>

            <output_format_parallel_formatting>0</output_format_parallel_formatting>

            <optimize_trivial_insert_select>1</optimize_trivial_insert_select>

        </read>

        <write>
            <readonly>0</readonly>

            <allow_ddl>0</allow_ddl>

            <max_bytes_before_external_group_by>268435456</max_bytes_before_external_group_by>

            <max_bytes_before_external_sort>268435456</max_bytes_before_external_sort>

            <max_download_threads>1</max_download_threads>

            <input_format_parallel_parsing>0</input_format_parallel_parsing>

            <output_format_parallel_formatting>0</output_format_parallel_formatting>

            <optimize_trivial_insert_select>1</optimize_trivial_insert_select>

        </write>

    </profiles>

    <!-- Users and ACL. -->
    <users>
        <read>
            <password>econage123</password>

            <networks>
                <ip>::/0</ip>

            </networks>

            <profile>read</profile>

            <quota>default</quota>

        </read>

        <admin>
            <password>econage123</password>

            <networks>
                <ip>::/0</ip>

            </networks>

            <profile>default</profile>

            <quota>default</quota>

        </admin>

        <user>
            <password>econage123</password>

            <networks>
                <ip>::/0</ip>

            </networks>

            <profile>write</profile>

            <quota>default</quota>

        </user>

        <!-- If user name was not specified, 'default' user is used. -->
        <default>
            <password>econage123</password>

            <networks>
                <ip>::1</ip>

            </networks>

            <!-- Settings profile for user. -->
            <profile>default</profile>

            <!-- Quota for user. -->
            <quota>default</quota>

            <!-- User can create other users and grant rights to them. -->
            <access_management>1</access_management>

        </default>

    </users>

    <!-- Quotas. -->
    <quotas>
        <!-- Name of quota. -->
        <default>
            <!-- Limits for time interval. You could specify many intervals with different limits. -->
            <interval>
                <!-- Length of interval. -->
                <duration>3600</duration>

                <!-- No limits. Just calculate resource usage for time interval. -->
                <queries>0</queries>

                <errors>0</errors>

                <result_rows>0</result_rows>

                <read_rows>0</read_rows>

                <execution_time>0</execution_time>

            </interval>

        </default>

    </quotas>

</clickhouse>

启动服务

systemctl start clickhouse-server
或者
clickhouse start

校验服务

curl localhost:8123
#返回'Ok.'则服务启动正常
clickhouse-client --user=user --password=econage123 --host=192.168.7.18 --query="select version()"
#返回版本号则用户创建正常

clickhouse-client --user=admin --password=econage123 --host=192.168.7.18 --query="select version()"
#返回版本号则用户创建正常

clickhosue集群版本配置

三台机器都需要执行上述clickouse安装步骤

添加zookeeper配置
vim /etc/clickhouse-server/config.xml

host是zookeeper的三个地址

port默认2181

修改配置

<zookeeper>
        <node index="1">
            <host>192.168.7.141</host>
            <port>2181</port>
        </node>
        <node index="2">
            <host>192.168.7.142</host>
            <port>2181</port>
        </node>
        <node index="3">
            <host>192.168.7.143</host>
            <port>2181</port>
        </node>
    </zookeeper>

配置分片

host是clickhouse的三个地址

port默认9000

                <replica>
                    <host>192.168.7.141</host>
                    <port>9000</port>
                </replica>
                <replica>
                    <host>192.168.7.142</host>
                    <port>9000</port>
                </replica>
                <replica>
                    <host>192.168.7.143</host>
                    <port>9000</port>
                </replica>

配置macros

第一台机器

    <macros>
        <shard>01</shard>
        <replica>01</replica>
    </macros>

第二台机器

    <macros>
        <shard>01</shard>
        <replica>02</replica>
    </macros>

第三台机器

    <macros>
        <shard>01</shard>
        <replica>03</replica>
    </macros>

启动服务

systemctl start clickhouse-server
或者
clickhouse start

验证集群同步

登录任意一台机器

clickhouse-client --user admin --password econage123
select * from system.clusters;

集群名称default

创建 ReplicatedMergeTree 测试表:

任选一台机器,创建一个 ReplicatedMergeTree 引擎的测试表,测试 ZooKeeper 同步功能

CREATE TABLE test_ck ON CLUSTER default (EventDate DateTime, Number UInt32, id UInt32 )
 ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/test_ck', '{replica}') PARTITION BY toYYYYMM(EventDate) 
 ORDER BY (Number, EventDate, intHash32(id)) SAMPLE BY intHash32(id);

在其他机器节点show tables查看表结构是否同步成功;

创建 Distributed 引擎测试表:
创建一个分布式测试表测试数据分片是否正常。因为已经配置了zookeeper,所以创建表的DDL语句也会同步到其他节点上。

CREATE TABLE dis_test ON CLUSTER default  AS test_ck
ENGINE = Distributed(default, default, test_ck, rand())

show table

文件清单

  • clickhouse-common-static-*.rpm
  • clickhouse-server-*.rpm
  • clickhouse-client-*.rpm
  • /etc/clickhouse-server/users.d/users.xml
  • /etc/clickhouse-server/config.d/config.xml

clickhouse目录说明

  • 数据文件目录 /var/lib/clickhouse/
  • 日志文件目录 /var/log/clickhouse-server/

可视化管理工具

  • dbeaver
  • http://localhost:8123/play
  • 更多参考 https://clickhouse.com/docs/zh/interfaces/third-party/gui

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2313405.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

驾培市场与低空经济无人机融合技术详解

随着科技的飞速发展和社会的不断进步&#xff0c;驾培市场正面临着前所未有的变革。传统汽车驾驶培训已不再是唯一的选择&#xff0c;无人机驾驶等新兴领域正逐渐成为驾培市场的重要组成部分。本报告旨在探讨驾培市场与低空经济的融合发展&#xff0c;特别是应用型人才培养与驾…

简单记录一下Oracle数据库与mysql数据库注入的不同。

Oracle数据库的注入比mysql较复制。 一确定注入点&#xff1a;与mysql一样。 and 11 -- #文章有出现. and 12 -- #文章不见了。 二。确定列数。 ’order by 1&#xff0c;2 -- #没问题 order by 1,2,3 -- #保错&#xff0c;所以有两列。 三&#xff0c;所有uni…

如何将本地已有的仓库上传到gitee (使用UGit)

1、登录Gitee。 2、点击个人头像旁边的加号&#xff0c;选择新建仓库&#xff1a; 3、填写仓库相关信息 4、复制Gitee仓库的地址 5、绑定我们的本地仓库与远程仓库 6、将本地仓库发布&#xff08;推送&#xff09;到远程仓库&#xff1a; 注意到此处报错&#xff…

Day04 模拟原生开发app过程 Androidstudio+逍遥模拟器

1、用Androidstudio打开已经写好了的music项目 2、逍遥模拟器打开apk后缀文件 3、在源文件搜索关键字 以后的测试中做资产收集

若依ry-vue分离板(完整版)前后端部署

目录 1.目标 2.准备工作 3.源码下载 4.整理前后端目录 5.先部署后端 &#xff08;1&#xff09;导入数据库 &#xff08;2&#xff09;改代码数据库配置 &#xff08;3&#xff09;运行redis &#xff08;4&#xff09;运行执行文件 &#xff08;5&#xff09;后端启…

【YOLOv8】YOLOv8改进系列(5)----替换主干网络之EfficientFormerV2

主页&#xff1a;HABUO&#x1f341;主页&#xff1a;HABUO &#x1f341;YOLOv8入门改进专栏&#x1f341; &#x1f341;如果再也不能见到你&#xff0c;祝你早安&#xff0c;午安&#xff0c;晚安&#x1f341; 【YOLOv8改进系列】&#xff1a; 【YOLOv8】YOLOv8结构解读…

北大一二三四版全套DeepSeek教学资料

DeepSeek学习资料合集&#xff1a;https://pan.quark.cn/s/bb6ebf0e9b4d DeepSeek实操变现指南&#xff1a;https://pan.quark.cn/s/76328991eaa2 你是否渴望深入探索人工智能的前沿领域&#xff1f;是否在寻找一份能引领你从理论到实践&#xff0c;全面掌握AI核心技术的学习…

【大模型】WPS 接入 DeepSeek-R1详解,打造全能AI办公助手

目录 一、前言 二、WPS接入AI工具优势​​​​​​​ 三、WPS接入AI工具两种方式 3.1 手动配置的方式 3.2 Office AI助手 四、WPS手动配置方式接入AI大模型 4.1 安装VBA插件 4.1.1 下载VBA插件并安装 4.2 配置WPS 4.3 WPS集成VB 4.4 AI助手效果测试 4.5 配置模板文…

STM32步进电机驱动全解析(上) | 零基础入门STM32第五十七步

主题内容教学目的/扩展视频步进电机电路原理&#xff0c;跳线设置&#xff0c;驱动程序&#xff0c;调用控制。熟悉驱动程序&#xff0c;能调用控制。 师从洋桃电子&#xff0c;杜洋老师 &#x1f4d1;文章目录 一、步进电机核心原理图解二、核心特性与优势三、关键驱动方式对比…

[NewStarCTF 2023 公开赛道]ez_sql1 【sqlmap使用/大小写绕过】

题目&#xff1a; 发现id处可以sql注入&#xff1a; 虽然输入id1;show databases;#没什么回显&#xff0c;但是知道这里是字符型注入了 这次利用sqlmap注入 --dbs&#xff1a;列出所有数据库名字 python .\sqlmap.py -u http://a40b2f0a-823f-4c99-b43c-08b94ed0abb2.node5.…

新能源汽车充电综合解决方案:安科瑞电气助力绿色出行

安科瑞 华楠 18706163979 随着新能源汽车的迅猛发展&#xff0c;充电基础设施的建设成为了推动行业进步的关键。然而&#xff0c;充电技术滞后、运营效率低下、车桩比失衡等问题&#xff0c;依然困扰着广大车主和运营商。今天&#xff0c;我们要为大家介绍一款新能源汽车充电…

蓝桥杯java-B组真题—动态规划

目录 一.什么是动态规划? 二.题目 第一种情况:集合本身之和为奇数 第二种情况:集合本身之和为偶数 下面是代码实现: 一.什么是动态规划? 这里就简单的解释一下&#xff0c;动态规划就是记录之前的计算结果&#xff0c;避免重复的计算之前已经计算过的结果&#xff0c;用…

网易邮箱如何用大数据任务调度实现海量邮件数据处理?Apache DolphinScheduler用户交流会上来揭秘!

你是否对大数据领域的前沿应用充满好奇&#xff1f;网易邮箱作为互联网大厂网易的重要业务线&#xff0c;在大数据应用方面有着诸多值得借鉴的实践经验。你是否渴望深入了解网易邮箱如何借助 Apache DolphinScheduler 实现海量邮件数据处理、用户行为分析、实时监控等核心业务场…

前端知识点---路由模式-实例模式和单例模式(ts)

在 ArkTS&#xff08;Ark UI 框架&#xff09;中&#xff0c;路由实例模式&#xff08;Standard Instance Mode&#xff09;主要用于管理页面跳转。当创建一个新页面时&#xff0c;可以选择标准实例模式&#xff08;Standard Mode&#xff09;或单实例模式&#xff08;Single M…

固定表头、首列 —— uniapp、vue 项目

项目实地&#xff1a;也可以在 【微信小程序】搜索体验&#xff1a;xny.handbook 另一个体验项目&#xff1a;官网 一、效果展示 二、代码展示 &#xff08;1&#xff09;html 部分 <view class"table"><view class"tr"><view class&quo…

langchain系列(九)- LangGraph 子图详解

目录 一、导读 二、原理说明 1、简介 2、子图图示 3、使用说明 三、基础代码实现 1、实现功能 2、Graph 图示 3、代码实现 4、输出 5、分析 四、人机交互 1、实现中断 2、历史状态&#xff08;父图&#xff09; 3、历史状态&#xff08;子图&#xff09; 4、历史…

搜索引擎是如何理解你的查询并提供精准结果的?

目录 一、搜索引擎简单介绍 二、搜索引擎整体架构和工作过程 &#xff08;一&#xff09;整体分析 &#xff08;二&#xff09;爬虫系统 三个基本点 爬虫系统的工作流程 关键考虑因素和挑战 &#xff08;三&#xff09;索引系统 网页处理阶段 预处理阶段 反作弊分析…

IDEA软件安装环境配置中文插件

一、Java环境配置 1. JDK安装8 访问Oracle官网下载JDK8&#xff08;推荐JDK8&#xff0c;11&#xff09;Java Downloads | Oracle 双击安装程序&#xff0c;保持默认设置连续点击"下一步"完成安装 验证JDK安装&#xff0c;winR键 然后输入cmd&#xff0c;输入java…

循环神经网络(RNN):时序建模的核心引擎与演进之路

在人工智能处理序列数据的战场上&#xff0c;循环神经网络&#xff08;RNN&#xff09;如同一个能够理解时间的智者。从 2015 年谷歌神经机器翻译系统颠覆传统方法&#xff0c;到 2023 年 ChatGPT 实现对话连续性&#xff0c;这些突破都植根于 RNN 对时序建模的深刻理解。本文将…

电脑总显示串口正在被占用处理方法

1.现象 在嵌入式开发过程中&#xff0c;有很多情况下要使用串口调试&#xff0c;其中485/422/232转usb串口是非常常见的做法。 根据协议&#xff0c;接口芯片不同&#xff0c;需要安装对应的驱动程序&#xff0c;比如ch340&#xff0c;cp2102&#xff0c;CDM212364等驱动。可…