openEuler JDK21 部署 Zookeeper 集群

zookeeper-jdk21

操作系统:openEuler
JDK:21

主机名IP地址
spark01192.168.171.101
spark02192.168.171.102
spark03192.168.171.103

安装

1. 升级内核和软件

yum -y update

2. 安装常用软件

yum -y install gcc gcc-c++ autoconf automake cmake make \
 zlib zlib-devel openssl openssl-devel pcre-devel \
 rsync openssh-server vim man zip unzip net-tools tcpdump lrzsz tar wget

3. 关闭防火墙

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld

4. 修改主机名

hostnamectl set-hostname spark01
hostnamectl set-hostname spark02
hostnamectl set-hostname spark03

5. 修改IP地址

vim /etc/sysconfig/network-scripts/ifcfg-ens160

参考如下:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens160
UUID=22d234d4-df21-45ca-a078-bb280978fbce
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.171.101
PREFIX=24
GATEWAY=192.168.171.2
DNS1=192.168.171.2

6. 修改hosts配置文件

vim /etc/hosts

修改内容如下:

192.168.171.101	spark01
192.168.171.102	spark02
192.168.171.103	spark03

7. 重启系统

reboot

8. 下载安装JDK和Zookeeper并配置环境变量

在所有主机节点创建软件目录

mkdir -p /opt/soft 

以下操作在 spark01 主机上完成

进入软件目录

cd /opt/soft

下载JDK

wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz

下载 Zookeeper

wget https://dlcdn.apache.org/zookeeper/zookeeper-3.9.1/apache-zookeeper-3.9.1-bin.tar.gz

解压 JDK 修改名称

解压 zookeeper 修改名称

tar -zxvf jdk-21_linux-x64_bin.tar.gz
mv jdk-21.0.1 jdk-21
tar -zxvf apache-zookeeper-3.9.1-bin.tar.gz
mv apache-zookeeper-3.9.1-bin zookeeper-3

配置环境变量

vim /etc/profile.d/my_env.sh

编写以下内容:

export JAVA_HOME=/opt/soft/jdk-21
export set JAVA_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED"

export ZOOKEEPER_HOME=/opt/soft/zookeeper-3

export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin

在各服务器上使环境变量生效

source /etc/profile

10. 编辑配置文件

cd $ZOOKEEPER_HOME/conf
vim zoo.cfg
# 心跳单位,2s
tickTime=2000
# zookeeper-3初始化的同步超时时间,10个心跳单位,也即20s
initLimit=10
# 普通同步:发送一个请求并得到响应的超时时间,5个心跳单位也即10s
syncLimit=5
# 内存快照数据的存储位置
dataDir=/home/zookeeper-3/data
# 事务日志的存储位置
dataLogDir=/home/zookeeper-3/datalog
# 当前zookeeper-3节点的端口 
clientPort=2181
# 单个客户端到集群中单个节点的并发连接数,通过ip判断是否同一个客户端,默认60
maxClientCnxns=1000
# 保留7个内存快照文件在dataDir中,默认保留3个
autopurge.snapRetainCount=7
# 清除快照的定时任务,默认1小时,如果设置为0,标识关闭清除任务
autopurge.purgeInterval=1
#允许客户端连接设置的最小超时时间,默认2个心跳单位
minSessionTimeout=4000
#允许客户端连接设置的最大超时时间,默认是20个心跳单位,也即40s,
maxSessionTimeout=300000
#zookeeper-3 3.5.5启动默认会把AdminService服务启动,这个服务默认是8080端口
admin.serverPort=9001
#集群地址配置
server.1=spark01:2888:3888
server.2=spark02:2888:3888
server.3=spark03:2888:3888
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/zookeeper-3/data
dataLogDir=/home/zookeeper-3/datalog 
clientPort=2181
maxClientCnxns=1000
autopurge.snapRetainCount=7
autopurge.purgeInterval=1
minSessionTimeout=4000
maxSessionTimeout=300000
admin.serverPort=9001
server.1=spark01:2888:3888
server.2=spark02:2888:3888
server.3=spark03:2888:3888

11. 保存后根据配置文件创建目录

在每台服务器上执行

mkdir -p /home/zookeeper-3/data
mkdir -p /home/zookeeper-3/datalog

12. 编写zookeeper-3开机启动脚本

在/etc/systemd/system/文件夹下创建一个启动脚本zookeeper-3.service

注意:在每台服务器上编写

cd /etc/systemd/system
vim zookeeper.service

内容如下:

[Unit]
Description=zookeeper
After=syslog.target network.target

[Service]
Type=forking
# 指定zookeeper-3 日志文件路径,也可以在zkServer.sh 中定义
Environment=ZOO_LOG_DIR=/home/zookeeper-3/datalog
# 指定JDK路径,也可以在zkServer.sh 中定义
Environment=JAVA_HOME=/opt/soft/jdk-21
ExecStart=/opt/soft/zookeeper-3/bin/zkServer.sh start
ExecStop=/opt/soft/zookeeper-3/bin/zkServer.sh stop
Restart=always
User=root
Group=root

[Install]
WantedBy=multi-user.target
[Unit]
Description=zookeeper
After=syslog.target network.target

[Service]
Type=forking
Environment=ZOO_LOG_DIR=/home/zookeeper-3/datalog
Environment=JAVA_HOME=/opt/soft/jdk-21
ExecStart=/opt/soft/zookeeper-3/bin/zkServer.sh start
ExecStop=/opt/soft/zookeeper-3/bin/zkServer.sh stop
Restart=always
User=root
Group=root

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
# 等所有主机配置好后再执行以下命令
systemctl start zookeeper
systemctl enable zookeeper
systemctl status zookeeper

13. 配置ssh免密钥登录

创建本地秘钥并将公共秘钥写入认证文件

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id root@spark01
ssh-copy-id root@spark02
ssh-copy-id root@spark03

14. 分发软件和配置文件

分发 ssh 免密钥

scp -r ~/.ssh root@spark02:~/
scp -r ~/.ssh root@spark03:~/

分发 hosts 文件

scp -r /etc/hosts root@spark02:/etc/
scp -r /etc/hosts root@spark03:/etc/

分发软件

scp -r /opt/soft/jdk-21 root@spark02:/opt/soft
scp -r /opt/soft/zookeeper-3 root@spark02:/opt/soft
scp -r /opt/soft/jdk-21 root@spark03:/opt/soft
scp -r /opt/soft/zookeeper-3 root@spark03:/opt/soft

分发环境变量

scp /etc/profile.d/my_env.sh root@spark02:/etc/profile.d/
scp /etc/profile.d/my_env.sh root@spark03:/etc/profile.d/

在所有主机节点 使新的环境变量生效

source /etc/profile

15. myid

spark01

echo 1 > /home/zookeeper-3/data/myid
more /home/zookeeper-3/data/myid

spark02

echo 2 > /home/zookeeper-3/data/myid
more /home/zookeeper-3/data/myid

spark03

echo 3 > /home/zookeeper-3/data/myid
more /home/zookeeper-3/data/myid

16. 启动服务

在各节点执行以下命令

systemctl daemon-reload
systemctl start zookeeper
systemctl enable zookeeper
systemctl status zookeeper

17. 验证

jps
zkServer.sh status

18. 浏览器访问 AdminServer

浏览器访问:http://spark03:9001/commands

zookeeper AdminServer

zookeeper shell

zookeeper 存储结构类似于Linux文件系统 使用根结构

node 不是文件也不是目录

客户端命令行

# 连接本地服务
zkCli.sh
# 连接其他节点
zkCli.sh -server spark02:2181
# 这里并不是连接了三个节点,而是按照顺序连接一个,当第一个连接无法获取时,就连接第二个
zkCli.sh -server spark01:2181,spark02:2181,spark03:2181

查看帮助

help
ZooKeeper -server host:port -client-configuration properties-file cmd args
	addWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVE
	addauth scheme auth
	close 
	config [-c] [-w] [-s]
	connect host:port
	create [-s] [-e] [-c] [-t ttl] path [data] [acl]
	delete [-v version] path
	deleteall path [-b batch size]
	delquota [-n|-b|-N|-B] path
	get [-s] [-w] path
	getAcl [-s] path
	getAllChildrenNumber path
	getEphemerals path
	history 
	listquota path
	ls [-s] [-w] [-R] path
	printwatches on|off
	quit 
	reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
	redo cmdno
	removewatches path [-c|-d|-a] [-l]
	set [-s] [-v version] path data
	setAcl [-s] [-v version] [-R] path acl
	setquota -n|-b|-N|-B val path
	stat [-w] path
	sync path
	version 
	whoami

连接其他节点

# 在某节点连接其他节点
connect spark01:2181

退出

quit

查看节点

ls /
ls -s /
cZxid = 0x0	# 节点创建的时候的zxid 
ctime = Thu Jan 01 08:00:00 CST 1970  # 节点创建的时候的zxid
mZxid = 0x0 #节点修改的时候的zxid,与子节点的修改无关
mtime = Thu Jan 01 08:00:00 CST 1970 # 节点修改的时间
pZxid = 0x0  # 子节点的创建/删除对应的 zxid,和修改无关,和孙子节点无关
cversion = -1 # 子节点的更新次数
dataVersion = 0 # 节点数据的更新次数
aclVersion = 0 # 节点(ACL)的更新次数
ephemeralOwner = 0x0 # 值表示与该节点绑定的 session id. 如果该节点不是 ephemeral 节点, ephemeralOwner 值为0
dataLength = 0  # 节点数据的字节数
numChildren = 1 # 节点数据的字节数

创建节点

持久

临时

有序号

无序号

# 持久无序号
# 节点lihaozhe存储的数据是 李昊哲
create /lihaozhe "李昊哲"
# 节点lihaozhe存储的数据是 空
create /lihaozhe ""

# 查看该节点中的文件或目录,[]代表其中没有文件或子目录
[zk: localhost:2181(CONNECTED) 7] ls /lihaozhe
[]

# 创建持久无序号子节点
create /lihaozhe/zk01
# 创建持久有序号子节点
create -s /lihaozhe/zk01

# 创建临时无序号节点
create -e /lihaozhe/zk10
# 创建临时有序号节点
create -e -s /lihaozhe/zk10

删除节点

delete /lihaozhe/zk04
delete /lihaozhe/zk01 # Node not empty: /lihaozhe/zk01
deleteall /lihaozhe

获取节点数据

get /lihaozhe

设置节点数据

set /lihaozhe "李大宝"

关闭当前session

close

监听

# NodeChildrenChanged
ls -w /lihaozhe
# NodeDataChanged
stat -w /lihaozhe
# 

haozhe
[]

创建持久无序号子节点

create /lihaozhe/zk01

创建持久有序号子节点

create -s /lihaozhe/zk01

创建临时无序号节点

create -e /lihaozhe/zk10

创建临时有序号节点

create -e -s /lihaozhe/zk10


### 删除节点

```bash
delete /lihaozhe/zk04
delete /lihaozhe/zk01 # Node not empty: /lihaozhe/zk01
deleteall /lihaozhe

获取节点数据

get /lihaozhe

设置节点数据

set /lihaozhe "李大宝"

关闭当前session

close

监听

# NodeChildrenChanged
ls -w /lihaozhe
# NodeDataChanged
stat -w /lihaozhe
# 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

低多边形3D建模动画风格纹理贴图

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格&#xf…

Python-文件详解

一个计算机包括:CPU、存储器、输入设备、输出设备 存储器分为内存和硬盘 文件路径:一层一层文件目录组成的字符串 文件路径可以视为文件在硬盘中的身份标识,因为每一个文件的1路径唯一 文件之间使用/反斜杠和\正斜杠都一样 内存和硬盘的区别…

【PyTorch】模型选择、欠拟合和过拟合

文章目录 1. 理论介绍2. 实例解析2.1. 实例描述2.2. 代码实现2.2.1. 完整代码2.2.2. 输出结果 1. 理论介绍 将模型在训练数据上拟合的比在潜在分布中更接近的现象称为过拟合, 用于对抗过拟合的技术称为正则化。训练误差和验证误差都很严重, 但它们之间差…

mysql知识分享(包含安装卸载)(一)

如果博客有错误,请佬指正。 目录 注意:打开cmd时要有管理员身份打开,重要 为何使用数据库? 数据库的相关概念 关系型数据库 关系型数据库设计规则 表,记录,字段 表的关联关系 一对一关联 一对多关系 …

基于Apache DolphinScheduler构建数据平台的实践分享

很荣幸收到社区的邀请来给大家分享一下公司基于构建数据平台的实践。我将首先介绍DataLink大数据平台,然后讲解调度系统的升级和选型,最后分享我们是如何基于Apache DolphinScheduler构建数据平台的,以及平台的现状和未来的规划。 公司介绍 …

ReentrantLock

文章目录 相对于 synchronized 它具备如下特点: 可中断,别的线程可以打断自己,避免自己竞争不到锁一直block,发生死锁可以设置超时时间:tryLock,可以解决死锁可以设置为公平锁,一般不会用支持多…

Zookeeper单机模式搭建

1、下载 ​wget https://dlcdn.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz 2、解压 tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz 3、进入 apache-zookeeper-3.6.3-bin目录下,创建data cd apache-zookeeper-3.6.3-bin mkdir da…

JVM GUI可视化监控及诊断工具

工具既述 使用命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但它们存在下列局限: 无法获取方法级别的分析数据,如方法间的调用关系、各方法的调用次数和调用时间等(这对定位应用性能瓶颈至关重要)。要…

resnet 图像分类的项目

1. 项目文件 文件下载资源:resnet 图像分类的项目代码 本章利用reset34 作图像分类,包括计算训练集和测试集的loss、accuracy曲线,对训练好的网络在训练集测试集上求混淆矩阵 data 文件为训练集测试集,图像按照文件夹摆放inferenc…

汽车电子 -- CAN文件格式ASC

Vector提供了两种记录数据格式的格式规范:BLF和ASC。 先讲讲ASC。 参看:图文详解CAN Log文件 - ASC文件格式 一、ASC文件格式 在Vector提供的 CAN_LOG_TRIGGER_ASC_Format.pdf 提取码:ltjv 文件中,规定了CANoe/CANalyzer ASC记…

利用TCP通信实现文件传输和通信

前言 我们上一章已经熟悉了理论知识&#xff0c;这一章来练习一下 1.实现文件的传输 1.1 客户端 dir_client.c #include <stdio.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/types.h> #include …

Java ThreadLocal 实现原理 与 如何使用弱引用解决内存泄漏问题

目录 一、ThreadLocal 有什么用二、ThreadLocal 使用示例三、ThreadLocal 实现原理四、ThreadLocal 如何是使用弱引用解决内存泄漏问题4.1、强引用内存泄漏分析4.1、弱引用解决内存泄漏问题 一、ThreadLocal 有什么用 ThreadLocal 诞生于 JDK 1.2&#xff0c;用于解决多线程间的…

基于ssm学院党员管理系统论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对鄂尔多斯应用技术学院党员信息管理混乱&#xff0c;出错率高&#x…

javaWebssh图书系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

系统前景 图书有很多&#xff0c;老的图书书的管理靠纸介质&#xff0c;浪费人力和物力&#xff0c;给图书管理者带来极大的资源浪费。随着计算机信息化的普及&#xff0c;对图书的管理带来本质的改变&#xff0c;图书的销售情况以及&#xff0c;图书管理&#xff0c;以及年终对…

振弦采集仪助力岩土工程质量控制

振弦采集仪助力岩土工程质量控制 随着工程建设规模越来越大&#xff0c;建筑结构的安全性和稳定性越来越成为人们所关注的焦点。岩土工程在工程建设中占据着非常重要的地位&#xff0c;岩土工程质量控制更是至关重要。而振弦采集仪作为一种先进的检测设备&#xff0c;正得到越…

Linux命令之ps

Linux命令之ps ps命令的基本用法**常用的ps命令示例** ps命令的基本用法 ps: 显示当前终端会话中属于当前用户的进程列表。 ps -ef: 显示系统中所有进程的列表&#xff0c;包括其他用户的进程。 ps -aux: 显示详细的进程信息&#xff0c;包括CPU和内存使用情况等。 -e选项&…

浅谈如何写开发信和报价?外贸邮件怎么写?

外贸开发信要写报价进去吗&#xff1f;写开发信能加产品价格吗&#xff1f; 开发信和报价是连接您和潜在客户之间的纽带&#xff0c;它们有助于传达您的价值主张、产品或服务的优势以及价格细节。蜂邮EDM将探讨如何撰写令人印象深刻的开发信和报价&#xff0c;以吸引更多的潜在…

AIGC:使用变分自编码器VAE实现MINIST手写数字生成

1 变分自编码器介绍 变分自编码器&#xff08;Variational Autoencoders&#xff0c;VAE&#xff09;是一种生成模型&#xff0c;用于学习数据的分布并生成与输入数据相似的新样本。它是一种自编码器&#xff08;Autoencoder&#xff09;的扩展&#xff0c;自编码器是一种用于…

严蔚敏数据结构p17(2.19)——p18(2.24) (c语言代码实现)

目录 2.19已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一高效的算法,删除表中所有值大于 mink 且小于 maxk 的元素(若表中存在这样的元素&#xff09;同时释放被删结点空间,并分析你的算法的时间复杂度(注意:mink 和 maxk 是给定的个参变量,它们的值可以和表…

【JavaEE】生产者消费者模式

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…