ClickHouse进阶(一):ClickHouse 使用场景及分布式集群安装

news2024/12/23 18:51:34

进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容!

🏡个人主页:含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客

📌订阅:拥抱独家专题,你的订阅将点燃我的创作热情!

👍点赞:赞同优秀创作,你的点赞是对我创作最大的认可!

⭐️ 收藏:收藏原创博文,让我们一起打造IT界的荣耀与辉煌!

✏️评论:留下心声墨迹,你的评论将是我努力改进的方向!


目录

1. clickhouse使用场景

2. clickhouse分布式集群安装

 2.1 clickhouse分布式集群安装

 2.2 clickhouse目录结构


1. clickhouse使用场景

clickhouse是一个开源的,用于联机分析(OLAP)的列式数据库管理系统(DBMS-database manager system), 它是面向列的,并允许使用SQL查询,实时生成分析报告。clickhouse最初是一款名为Yandex.Metrica的产品,主要用于WEB流量分析。clickhouse的全称是Click Stream,Data WareHouse,简称clickhouse。

clickhouse使用C++进行编写,具有很多优秀的特点,如在clickhouse基础篇我们讲解的clickhouse特性:完备的DBMS功能、列式存储、数据压缩、向量化执行、支持标准SQL、支持20多张表引擎、支持多线程与分布式、多主架构、交互式查询、数据分片与分布式查询等。clickhouse官网地址由原来的https://clickhouse.tech改变为https://clickhouse.com。

clickhouse适合OLAP数据分析类的场景,数据体量越大,clickhouse的优势越大。clickhouse不适合以下场景:

  1. clickhouse 不支持事务,事务场景不适合
  2. 不适合根据主键进行行粒度查询或删除场景(支持但不建议)

2. clickhouse分布式集群安装

在后期创建表演示clickhouse高级操作时,必须使用到clickhouse集群,由于clickhouse发展非常迅速,几乎每个月都会更新clickhouse几个版本,与之前的clickhouse20.8版本相对比,新的clickhouse版本安装与配置有部分不同, 这里我们选择使用clickhouse 21.9.4.35版本来重新进行分布式集群搭建,采用rmp包的安装方式。

我们可以从官网给定的下载rpm包的地址下载最新的clickhouse rpm安装包,地址如下:Index of /clickhouse/rpm/stable/x86_64/

注意:这里从clickhouse19.4版本之后,只需要下载3个rpm安装包即可,分别如下:

clickhouse-common-static-21.9.4.35-2.x86_64.rpm

clickhouse-server-21.9.4.35-2.noarch.rpm

clickhouse-client-21.9.4.35-2.noarch.rpm

 2.1 clickhouse分布式集群安装

clickhouse分布式集群安装选择三台节点,分别为node1,node2,node3,详细安装步骤如下:

1) 选择三台clicsskhouse节点,在每台节点上安装clickhouse需要的安装包

这里选择node1、node2,node3三台节点,上传安装包,分别在每台节点上执行如下命令安装clickhouse:

rpm -ivh ./clickhosue-common-static-21.9.4.35-2.x86_64.rpm
#注意在安装以下rpm包时,让输入密码,可以直接回车跳过
rpm -ivh ./clickhouse-server-21.9.4.35-2.noarch.rpm
rpm -ivh clickhouse-client-21.9.4.35-2.noarch.rpm

2) 安装zookeeper集群并启动。

搭建clickhouse集群时,需要使用Zookeeper去实现集群副本之间的同步,所以这里需要zookeeper集群,zookeeper集群安装后可忽略此步骤。

3) 配置外网可访问

在每台clickhouse节点中配置/etc/clickhouse-server/config.xml文件第164行<listen_host>,如下:

<listen_host>::1</listen_host>
#注意每台节点监听的host名称配置当前节点host
<listen_host>node1</listen_host>

4) 在每台节点创建metrika.xml文件,写入以下内容

在node1、node2、node3节点上/etc/clickhouse-server/config.d路径下下配置metrika.xml文件,默认clickhouse会在/etc路径下查找metrika.xml文件,但是必须要求metrika.xml上级目录拥有者权限为clickhouse ,所以这里我们将metrika.xml创建在/etc/clickhouse-server/config.d路径下,config.d目录的拥有者权限为clickhouse。

在metrika.xml中我们配置后期使用的clickhouse集群中创建分布式表时使用3个分片,每个分片有1个副本,配置如下:

vim /etc/clickhouse-server/config.d/metrika.xml:

<yandex>
    <remote_servers>
        <clickhouse_cluster_3shards_1replicas>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>node1</host>
                    <port>9000</port>
                </replica>
            </shard>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>node2</host>
                    <port>9000</port>
                </replica>
            </shard>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>node3</host>
                    <port>9000</port>
                </replica>
            </shard>
        </clickhouse_cluster_3shards_1replicas>
    </remote_servers>
     
    <zookeeper>
        <node index="1">
            <host>node3</host>
            <port>2181</port>
        </node>
        <node index="2">
            <host>node4</host>
            <port>2181</port>
        </node>
        <node index="3">
            <host>node5</host>
            <port>2181</port>
        </node>
    </zookeeper>
    <macros>
        <shard>01</shard> 
        <replica>node1</replica>
    </macros>
    <networks>
        <ip>::/0</ip>
    </networks>
    <clickhouse_compression>
        <case>
            <min_part_size>10000000000</min_part_size>
            <min_part_size_ratio>0.01</min_part_size_ratio>
            <method>lz4</method>
        </case>
    </clickhouse_compression>
</yandex>

对以上配置文件中配置项的解释如下:

  • remote_servers:

clickhouse集群配置标签,固定写法。注意:这里与之前版本不同,之前要求必须以clickhouse开头,新版本不再需要。

  • clickhouse_cluster_3shards_1replicas:

配置clickhouse的集群名称,可自由定义名称,注意集群名称中不能包含点号。这里代表集群中有3个分片,每个分片有1个副本。

分片是指包含部分数据的服务器,要读取所有的数据,必须访问所有的分片。

副本是指存储分片备份数据的服务器,要读取所有的数据,访问任意副本上的数据即可。

  • shard:

分片,一个clickhouse集群可以分多个分片,每个分片可以存储数据,这里分片可以理解为clickhouse机器中的每个节点,1个分片只能对应1服务节点。这里可以配置一个或者任意多个分片,在每个分片中可以配置一个或任意多个副本,不同分片可配置不同数量的副本。如果只是配置一个分片,这种情况下查询操作应该称为远程查询,而不是分布式查询。

  • replica:

每个分片的副本,默认每个分片配置了一个副本。也可以配置多个,副本的数量上限是由clickhouse节点的数量决定的。如果配置了副本,读取操作可以从每个分片里选择一个可用的副本。如果副本不可用,会依次选择下个副本进行连接。该机制利于系统的可用性。

  • internal_replication:

默认为false,写数据操作会将数据写入所有的副本,设置为true,写操作只会选择一个正常的副本写入数据,数据的同步在后台自动进行。

  • zookeeper:

配置的zookeeper集群,注意:与之前版本不同,之前版本是“zookeeper-servers”。

  • macros:

区分每台clickhouse节点的宏配置,macros中标签<shard>代表当前节点的分片号,标签<replica>代表当前节点的副本号,这两个名称可以随意取,后期在创建副本表时可以动态读取这两个宏变量。注意:每台clickhouse节点需要配置不同名称。

  • networks:

这里配置ip为“::/0”代表任意IP可以访问,包含IPv4和IPv6。

注意:允许外网访问还需配置/etc/clickhouse-server/config.xml 参照第三步骤。

  • clickhouse_compression:

MergeTree引擎表的数据压缩设置,min_part_size:代表数据部分最小大小。min_part_size_ratio:数据部分大小与表大小的比率。method:数据压缩格式。

注意:需要在每台clickhouse节点上配置metrika.xml文件,并且修改每个节点的 macros配置名称。

#node2节点修改metrika.xml中的宏变量如下:
    <macros>
        <shard>02</replica> 
        <replica>node2</replica>
    </macros>

#node3节点修改metrika.xml中的宏变量如下:
<macros>
        <shard>03</replica> 
        <replica>node3</replica>
    </macros>

5) 在每台节点上启动/查看/重启/停止clickhouse服务

首先启动zookeeper集群,然后分别在node1、node2、node3节点上启动clickhouse服务,这里每台节点和单节点启动一样。启动之后,clickhouse集群配置完成。

#每台节点启动Clickchouse服务
service clickhouse-server start

#每台节点查看clickhouse服务状态
service clickhouse-server status

#每台节点重启clickhouse服务
service clickhouse-server restart

#每台节点关闭Clikchouse服务
service clickhouse-server stop

6) 检查集群配置是否完成

在node1、node2、node3任意一台节点进入clickhouse客户端,查询集群配置:

#选择三台clickhouse任意一台节点,进入客户端
clickhouse-client 
#查询集群信息,看到下图所示即代表集群配置成功。
node1 :) select * from system.clusters;

#查询集群信息,也可以使用如下命令
node1 :) select cluster,host_name from system.clusters;

 

 2.2 clickhouse目录结构

clickhouse集群安装完成之后会生成如下对应的目录,每个目录的介绍如下:

  • /etc/clickhouse-server :

服务端的配置文件目录,包括全局配置config.xml 和用户配置users.xml。

  • /var/lib/clickhouse :

默认的数据存储目录,通常会修改,将数据保存到大容量磁盘路径中,此路径可以通过/etc/clickhouse-server/config.xml配置,配置标签<path>对应的数据。

  • /var/log/cilckhouse-server :

 默认保存日志的目录,通常会修改,将数据保存到大容量磁盘路径中,此路径可以通过/etc/clickhouse-server/config.xml配置,配置标签<log>对应的数据。

  • 在/usr/bin下会有可执行文件:
  1. clickhouse:主程序可执行文件
  2. clickhouse-server:一个指向clickhouse可执行文件的软连接,供服务端启动使用。
  3. clickhouse-client:一个指向clickhouse可执行文件的软连接,供客户端启动使用。

 👨‍💻如需博文中的资料请私信博主。


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

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

相关文章

error while loading shared libraries错误的原因及解決方法——通用解决办法,错误加载xxxx共享库(.so)

在linux下整合log4cpp日志框架时&#xff0c;出现了下面的错误&#xff1a;当加载共享库时出错&#xff0c;找不到共享库 XXXX [roothecs-207177 cworkspace]# ./Log4cppTest ./Log4cppTest: error while loading shared libraries: liblog4cpp.so.5: cannot open shared obj…

svn下载

Download | VisualSVN for Visual Studio svn下载

MySQL数据库——函数-字符串函数、数值函数、日期函数、流程函数

目录 字符串函数 常用函数 练习 数值函数 常用函数 练习 日期函数 常用函数 练习 流程函数 常用函数 练习 函数 是指一段可以直接被另一段程序调用的程序或代码。 MySQL内置函数&#xff0c;主要分为四类&#xff1a; 字符串函数数值函数日期函数流程函数 字符串函…

java+springboot+mysql农业园区管理系统

项目介绍&#xff1a; 使用javaspringbootmysql开发的农业园区管理系统&#xff0c;系统包含超级管理员、管理员、用户角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;管理员管理&#xff1b;用户管理&#xff1b;土地管理&#xff08;租赁&#xff09;&#x…

PATH系统环境变量配置教程【图文步骤】

开发Java程序&#xff0c;需要使用JDK提供的开发工具(比如javac.exe、java.exe等命令)&#xff0c;而这些工具在JDK的安装目录的 bin目录下&#xff0c;如果不配置环境变量&#xff0c;那么这些命令只可以在该目录下执行。我们不可能把所有的java文件都放到JDK 的bin目录下&…

学习JAVA打卡第三十九天

字符串与基本数据的相互转化 Java.lang包中的Integer类调用其类方法public static int parseInt&#xff08;string s&#xff09;可以将由“数字”字符组成的字符序列如“876”&#xff0c;转化成int型数据&#xff0c;例如&#xff1a; int x&#xff1b; string s“876”&a…

如何使用CSS实现一个自适应两栏布局,其中一栏固定宽度,另一栏自适应宽度?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用Float属性⭐ 使用Flexbox布局⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感…

Spring练习30---用户列表的展示(下)

1、得到数据之后&#xff0c;我进行封装 2、关键这个方法 3、方法实现一下 4、然后找到Dao的实现&#xff0c;给他实现一下 5、模板查几个表 6、根据userid 查role Id 7、根据他再去查role那张表&#xff0c;两张表以上 8、后面那一块的意思是role表的role Id等于中间表的谁 9…

JWT令牌的介绍

目录 一、什么是JWT 二、JWT令牌和Cookie客户端、Session服务端对比 三、特点与注意事项 四、使用场景 优点&#xff1a; 五、结构组成 一、什么是JWT JWT&#xff08;JSON Web Token&#xff09;是一种用于在网络应用间传递信息的开放标准&#xff08;RFC 7519&#x…

postman接口自动化测试框架实战!

什么是自动化测试 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试&#xff0c;模拟人去操作软件界面&#xff0c;把人从简单重复的劳动中解放出来。 本质是用代码去测试另一段代码&#xff0c;属于一种软件开发工作&#xff0c;已经开发完成的用…

纠缠辅助的量子网络:原理、技术、发展与挑战

7月11日&#xff0c;中国科大网络空间安全学院和陆军院士工作室李忠辉博士为第一作者、薛开平教授为通讯作者的量子网络综述论文“Entanglement-Assisted Quantum Networks: Mechanics, Enabling Technologies, Challenges, and Research Directions”在通信领域知名期刊《IEEE…

【node】nvm切换node版本

以下我给出了下载与切换node版本的方法. node.js版本降级或者升级 先下载nvm 修改nvm下载的地址(防止下载Node.js速度过慢,一直加载) 配置下载源 为了加快node.js和npm的下载速度&#xff0c;最好配置国内的node.js和npm下载源。在nvm的安装路径下&#xff0c;找到setting.tx…

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器

1、打开仿真工具&#xff0c;创建PLC&#xff0c;注意创建完成后不要关闭 注意&#xff0c;这个IP地址必须与西门子虚拟网卡的IP地址及虚拟机的网卡IP地址同一网段 2、打开博途V15&#xff0c;创建项目&#xff0c;命名为Lan项目 3、添加1500系列CPU1513 4、设置设置IP地址及属…

stm32之12.如何使用printf打印输出

主函数增加这些代码即可实现printf打印输出 需要添加头文件 #include "stdio.h" --------------- 源码 struct __FILE { int handle; /* Add whatever you need here */ }; FILE __stdout; FILE __stdin; int fputc(int c, FILE *f) { /* 发送一个字节 */ …

(AcWing) 最长上升子序列

给定一个长度为 N 的数列&#xff0c;求数值严格单调递增的子序列的长度最长是多少。 输入格式 第一行包含整数 N。 第二行包含 N 个整数&#xff0c;表示完整序列。 输出格式 输出一个整数&#xff0c;表示最大长度。 数据范围 1≤N≤1000&#xff0c; −109≤数列中的…

Visual Studio 2022 右键单击项目没有出现View | View Class Diagram(Visual Studio 无法使用类设计器)

文章目录 问题描述原因.NET Core项目.NET Framework项目 问题描述 当我们在Solution Explorer窗口右键单击项目时&#xff0c;快捷菜单中没有出现“查看”&#xff0c;或者出现了“查看”&#xff0c;但是“查看”里没有View Class Diagram。 原因 首先你要确保你安装了类设…

高品质的运动耳机有哪些、高端运动耳机推荐

随着健康生活理念的广泛普及&#xff0c;对于很多人来说&#xff0c;运动已经成为他们日常生活不可或缺的重要组成部分。在激情四溢的健身运动中&#xff0c;我们既能够放松身心&#xff0c;减轻工作压力&#xff0c;又能够强健身体&#xff0c;增强免疫力&#xff0c;可谓一举…

伦敦银和国内银价的换算

从去年开始&#xff0c;国内就不断地收紧普通投资者对杠杆白银产品的投资渠道&#xff0c;这令来自海外市场的伦敦银受到了越来越多的关注&#xff0c;但它始终是以美元和盎司计价的品种&#xff0c;对于习惯了国内计量单位的投资者来说&#xff0c;自然而然就也产生了“换算”…

AB测试可以用来测什么?不能测什么?

AB测试可以测什么&#xff1a; AB测试是常用的因果推断方法&#xff0c;可以用来检验新功能发版是否有效、策略上线是否有效。 有两个大方向的应用场景&#xff0c;一是产品迭代&#xff0c;二是策略优化。其中策略包括运营策略、算法策略等。 具体例子&#xff1a; 应用场景…

逆置字符串允许有空格和. 如I like China.->China. like I

void reverse(char* left, char* right) {while (left < right){int tmp *left;*left *right;*right tmp;left;right--;} } int main() {char arr[101] { 0 };gets_s(arr);int len strlen(arr);//求字符串长度//逆置整个字符串reverse(arr,arrlen-1);char* start arr;…