clickhouse集群搭建

news2024/10/6 14:35:51

一、clickhouse单机部署

clickhouse镜像下载地址

https://mirrors.tuna.tsinghua.edu.cn/clickhouse/

1、关闭防火墙

 #查看防火墙状态
 systemctl status firewalld
 #关闭防火墙
 systemctl stop firewalld
 #设置防火墙服务开机不自启
 systemctl disable firewalld
 #再次查看防火墙检查防火墙是否关闭
 systemctl status firewalld

2、取消文件数限制

 vim /etc/security/limits.conf
 * soft nofile 65536 
 * hard nofile 65536 
 * soft nproc 131072 
 * hard nproc 131072
 ​
 vim /etc/security/limits.d/20-nproc.conf
 * soft nofile 65536 
 * hard nofile 65536 
 * soft nproc 131072 
 * hard nproc 131072

3、安装依赖

 yum install -y libtool
 yum install -y *unixODBC*

4、取消selinux

 vim /etc/selinux/config
 SELINUX=disabled

5、创建clickhouse文件夹及安装

将clickhouse依赖包上传到该目录下,然后一键安装

 rpm -ivh *.rpm
 ​
 #clickhouse安装包
 clickhouse-client-20.4.5.36-2.noarch.rpm
 clickhouse-common-static-20.4.5.36-2.x86_64.rpm
 clickhouse-common-static-dbg-20.4.5.36-2.x86_64.rpm
 10:34 clickhouse-server-20.4.5.36-2.noarch.rpm
 ​

6、修改clickhouse-server的配置文件

 vim /etc/clickhouse-server/config.xml
 #让本机的clickhouse可以被其他服务器访问
 打开<listen_host>::</listen_host>
 #数据文件路径
 <path>/var/lib/clickhouse/</path>
 #日志文件路径
 <log>/var/log/clickhouse-server/clickhouse-server.log</log>

7、关闭开机自启

 systemctl disable clickhouse-server

8、启动clickhouse

 systemctl start clickhouse-server

9、连接clickhouse

 clickhouse-client -m

10、重启clickhouse

 service clickhouse-server restart
 #日志
 [root@hdp4 clickhouse-server]# service clickhouse-server restart
 Stop clickhouse-server service: DONE
 Start clickhouse-server service: Path to data directory in /etc/clickhouse-server/config.xml: /var/lib/clickhouse/
 DONE

二、clickhouse集群及副本安装——2分片1副本

前面的配置和单机一样,下面的配置每个节点均执行

1、clickhouse-server的配置文件

110和111是同一分片的两副本,110和112是同一集群的两分片

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

 <?xml version="1.0"?>
 <yandex>
     <clickhouse_remote_servers>
         <luopc_mpp_cluster>
             <shard>
             <internal_replication>true</internal_replication>
                 <replica>
                     <host>192.168.8.110</host>
                     <port>9000</port>
                 </replica>
                 <replica>
                     <host>192.168.8.111</host>
                     <port>9000</port>
                 </replica>
             </shard>
 ​
             <shard>
                 <internal_replication>true</internal_replication>
                 <replica>
                     <host>192.168.8.112</host>
                     <port>9000</port>
                 </replica>
             </shard>
         </luopc_mpp_cluster>
     </clickhouse_remote_servers>
 ​
     <zookeeper-servers>
         <node index="1">
             <host>192.168.8.110</host>
             <port>2181</port>
         </node>
         <node index="2">
             <host>192.168.8.111</host>
             <port>2181</port>
         </node>
         <node index="3">
             <host>192.168.8.112</host>
             <port>2181</port>
         </node>
     </zookeeper-servers>
 ​
     <macros>
         <shard>01</shard>
         <replica>rep_1_1</replica>
     </macros>
 </yandex>

2、宏修改——macros

macros是宏的意思,各节点说明及宏修改。marros用于标识当前节点的在集群中的角色。

mpp-1(192.168.8.110)——分片1

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

mpp-2(192.168.8.111)——分片1的副本

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

mpp-3(192.168.8.112)——分片2

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

3、将metrika-shard.xml添加到config.xml中

 <include_from>/etc/clickhouse-server/config.d/metrika-shard.xml</include_from>

4、使用clickhouse-client

 clickhouse-client -m

5、使用分布式表测试集群

 #副本表
 create table student on cluster luopc_mpp_cluster (
     id UInt8,
     name String,
     age UInt8,
     create_time  Datetime
  ) engine =ReplicatedMergeTree('/clickhouse/tables/{shard}/student','{replica}')
  primary key (id)
  order by (id,age);
 ​
 #分布式表
 create table student_all on cluster luopc_mpp_cluster(
     id UInt8,
     name String,
     age UInt8,
     create_time Datetime
 )engine=Distributed(luopc_mpp_cluster,default,student,rand());

6、插入数据测试

 insert into student_all values
 (1,'a',17,'2021-05-08 12:00:00'),
 (2,'b',25,'2021-05-08 12:00:00'),
 (3,'c',20,'2021-05-08 12:00:00'),
 (4,'d',22,'2021-05-08 12:00:00'),
 (5,'e',30,'2021-05-08 12:00:00');

7、本地表、分布式表查询情况

本地表数据分布情况(原始数据如上)

节点名称表类型数据分布
mpp-1本地表┌─id─┬─name─┬─age─┬─────────create_time─┐ │ 4 │ d │ 22 │ 2021-05-08 12:00:00 │ └────┴──────┴─────┴─────────────────────┘
mpp-2本地表
mpp-3本地表┌─id─┬─name─┬─age─┬─────────create_time─┐ │ 1 │ a │ 17 │ 2021-05-08 12:00:00 │ │ 2 │ b │ 25 │ 2021-05-08 12:00:00 │ │ 3 │ c │ 20 │ 2021-05-08 12:00:00 │ │ 5 │ e │ 30 │ 2021-05-08 12:00:00 │ └────┴──────┴─────┴─────────────────────┘

 

分布式表数据分布情况:集群中任意节点和分片的分布式表查询结果一致

 

说明 1、建表时使用on cluster表示是表模型同步到各个节点中。 2、使用engine=ReplicatedMergeTree,数据将分散到各个分片,相同的分片的副本数据相同。 3、使用engine=Distributed,则可以在任意分片和副本中查看数据结果相同。 4、使用engine=Distributed的表是分布式表,分布式表类似于视图,不存数据,分布式表引擎会将我们的查询请求路由本地表进行查询, 然后进行汇总最终返回给用户。

三、遇到的问题

1、clickhouse连接不上——clickhouse未启动

 clickhouse-client -m

日志

 [root@localhost ~]# clickhouse-client -m
 ClickHouse client version 20.4.5.36 (official build).
 Connecting to localhost:9000 as user default.
 Code: 210. DB::NetException: Connection refused (localhost:9000)

2、clickhouse启动失败——zookeeper未启动

 systemctl start clickhouse-server

日志

 [root@localhost ~]# systemctl status clickhouse-server
 ● clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
    Loaded: loaded (/etc/systemd/system/clickhouse-server.service; enabled; vendor preset: disabled)
    Active: activating (auto-restart) (Result: exit-code) since 五 2021-05-14 18:18:53 CST; 1s ago
   Process: 1838 ExecStart=/usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid (code=exited, status=70)
  Main PID: 1838 (code=exited, status=70)
 ​
 5月 14 18:18:53 localhost.localdomain systemd[1]: clickhouse-server.service: main process exited, code=exited, status=70/n/a
 5月 14 18:18:53 localhost.localdomain systemd[1]: Unit clickhouse-server.service entered failed state.
 5月 14 18:18:53 localhost.localdomain systemd[1]: clickhouse-server.service failed.

3、clickhouse启动后又关闭——端口占用

 systemctl start clickhouse-server
 ps -aux | grep clickhouse-server
 ​
 #启动后立刻查看进程可以看到进程信息,大约2~3后再次查看进程消失
 #查看日志后发现端口占用
 #本次问题是组件smartsense,端口是9000
 #本次解决办法是卸载smartsense,因为它没有被用到
 #另外一种做法修改clickhouse的端口号

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

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

相关文章

开源软件如何使企业和业务受益

在当今技术驱动、快速发展的商业环境中&#xff0c;越来越多的公司选择投资开源软件。开源为企业提供了许多优势&#xff1a;更快的创新步伐、来自庞大而热情的社区的强大支持以及不受供应商锁定的影响。 对于许多人来说&#xff0c;开源不仅仅是编码。它代表了一种生活方式。…

使用IDEA工具,通过Java API 操作 HDFS (文件/目录的操作,含源码,详细操作步骤)

文章目录一&#xff0c;了解 HDFS Java API&#xff08;一&#xff09;HDFS常见类与接口&#xff08;二&#xff09;FileSystem的常用方法二&#xff0c;编写Java程序访问HDFS01 创建Maven项目02 添加相关依赖03 创建日志属性文件&#xff08;1&#xff09;在resources目录里创…

2022年还剩半个月,我从外包公司离职了...

今天是12.12&#xff0c;距离元旦也仅剩半个月&#xff0c;大家都在考论假期怎么过&#xff0c;没错&#xff0c;我离职了... 19年大专毕业通过校招进入了一家外包公司&#xff0c;干了接近3年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff…

MyBatis 注解开发

文章目录一、单表查询1. Select 注解2. Insert 注解3. Update 注解4. Delete 注解5. Param 注解二、多表关联查询1. 一对一查询2. 一对多查询3. 多对多查询一、单表查询 1. Select 注解 前面的章节介绍了 MyBatis 的基本用法、关联映射、动态 SQL 和缓存机制等知识&#xff0…

[附源码]计算机毕业设计房屋租赁系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

算法竞赛入门【码蹄集进阶塔335题】(MT2201-2225)

算法竞赛入门【码蹄集进阶塔335题】(MT2201-2225&#xff09; 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2201-2225&#xff09;前言为什么突然想学算法了&#xff1f;为什么选择码蹄集作为刷题软件&#xff1f;目录1. MT2201 字符串转换2. MT2202 Summer Pockets3. MT2203…

alsa框架与音频芯片移植基础

ALSA音频框架 Alsa是Advanced Linux Sound Architecture的缩写&#xff0c;即高级Linux声音架构&#xff0c;在Linux操作系统上提供了对音频和MIDI的支持。在Linux 2.6的内核版本后&#xff0c;Alsa目前已经成为了linux的主流音频体系结构。 除了 alsa-driver&#xff0c;ALS…

CSS -- 使用纯CSS绘制三角形及常见案例汇总

文章目录1. 绘制原理2. 绘制最简单的三角形3. 绘制对话框4. 绘制两条直角边不等长的三角形1. 绘制原理 网页中常见一些三角形&#xff0c;使用 CSS 直接画出来就可以&#xff0c;不必做成图片或者字体图标 给每个边框不同的颜色可以看到&#xff0c;每个边框其实都是一个小三…

测试(缺陷管理)

目录 1.缺陷管理理论 1.1.定义 1.2缺陷的名称 1.3.产生缺陷的原因 1.4.缺陷管理流程 1.5.缺陷管理生命周期与状态 2.如何提交缺陷 2.1.提交的Bug的目的 2.2.提交Bug的注意事项 2.3.提交Bug报告应遵循的原则 2.4.Bug报告需包含哪些内容 1.缺陷管理理论 1.1.定义 软件…

rust编程-rust所有权理解(chapter 4.3 Slice切片类型)

目录 3. 切片&#xff08;Slice&#xff09;类型 3.1 String slice(字符串切片) 3.2 其它切片 3. 切片&#xff08;Slice&#xff09;类型 切片可以用来获取一个集合中连续的元素序列&#xff0c;且切片是一种引用类型&#xff0c;因此不具有所有权。 如下是一个小的编程示…

day17_面向对象的三大特征之一(多态)

概述 多态是继封装、继承之后&#xff0c;面向对象的第三大特性。 生活中&#xff0c;比如求面积的功能&#xff0c;圆、矩形、三角形实现起来是不一样的。跑的动作&#xff0c;小猫、小狗和大象&#xff0c;跑起来是不一样的。再比如飞的动作&#xff0c;昆虫、鸟类和飞机&a…

【数字IC设计】Design Compiler入门

本博客参考自文章链接 本文以全加器为例&#xff0c;演示DC综合的流程。设计文件如下&#xff1a; module full_adder( input clk, input rstn, input [31:0] a_in, input [31:0] b_in, input c_in, output reg [31:0] sum_out, output reg c_out ); wire c_out_w; wire [31:0…

[vue学习笔记]数组+事件+v-model的使用

1.关于数组的使用以及常见的函数 &#xff08;1&#xff09;在队尾操作函数&#xff1a;push&#xff08;&#xff09;&#xff1a;追加&#xff0c;pop&#xff08;&#xff09;&#xff1a;删除 arr.push(9,8,7,6); 这种批量追加的方式也是被允许的 &#xff08;2&#xf…

Gem5模拟器,关于Adding parameters to SimObjects and more events的一些问题记录(六)

目录 &#xff08;1&#xff09;为什么Gem是Python和C混合使用编程&#xff1f; &#xff08;2&#xff09;关于析构函数 创建类的时候一般都需要写上析构函数吗&#xff1f; &#xff08;3&#xff09;关于HelloObject和GoodbyeObject的先后后创建关系 &#xff08;1&…

C# 类 字段 方法

一 现实中的实物抽象为类 类(class)最基本的要素是 ① 字段(field):变量&#xff1b; ② 方法(method):函数&#xff1b; class Person {public string name;public int age;public void SayHello(){Console.WriteLine("Hello!My name is"name);}public string Ge…

(Python)第2章-12 输出三角形面积和周长 (15 分)

Python解决输入三条边输出面积与周长1.问题2.解决思路代码在孤单的日子里&#xff0c;你单枪匹马奋斗的样子酷毙了。江客&#xff1a;时荒![在这里插入图片描述](https://img-blog.csdnimg.cn/85fc4495dcfc4578a8612a432d8045cd.png#pic_center)1.问题 本题要求编写程序&#…

Arduino Uno零基础入门学习笔记——变量与函数

文章目录一、创建变量二、函数三、delay的例子总结一、创建变量 int currentTemperature;整数型变量 变量名字 分号 使用驼峰命名法对进行命名 有些程序员喜欢全部小写&#xff0c;有些程序员喜欢用下划线&#xff0c;所以如果要写一个my name的变量&#xff0c;他们常用的写…

vue3中的propemit

状态是什么&#xff1a; 页面中要显示的东西&#xff0c;放在一个变量中&#xff0c;每次更改完值&#xff0c;就会被拦截&#xff0c;同时再重新渲染页面&#xff1b; 状态的对立面就是属性&#xff1b; 可以没有状态&#xff0c;那只能用父组件传过来的属性来自己用&#…

Saga 模式

Saga 模式目录概述需求&#xff1a;设计思路实现思路分析1.2.适用场景&#xff1a;3.缺点&#xff1a;4.Saga的实现&#xff1a;参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,ma…

mysql数据恢复,mysql数据备份,详细聊聊mysql数据备份与恢复

文章目录写在前面数据备份与恢复1、全量备份模拟全量备份与恢复全量备份的缺点2、增量备份模拟增量备份与恢复增量备份注意事项总结写在前面 作为互联网开发人员来说&#xff0c;数据安全性一直排在第一位的重中之重。 mysql作为关系型数据库的一个巨头&#xff0c;其备份与恢…