大数据平台/大数据技术与原理-实验报告--部署ZooKeeper集群和实战ZooKeeper

news2024/12/23 14:41:32

实验名称

部署ZooKeeper集群和实战ZooKeeper

实验性质

(必修、选修)

必修

实验类型(验证、设计、创新、综合)

综合

实验课时

2

实验日期

2023.11.04-2023.11.05

实验仪器设备以及实验软硬件要求

专业实验室(配有centos7.5系统的linux虚拟机三台

实验目的

1. 理解ZooKeeper的系统模型,包括数据模型、版本机制、Watcher监听机制、ACL权限控制机制。

2. 理解ZooKeeper的工作原理,包括集群架构、Leader选举机制。

3. 熟练掌握ZooKeeper集群的部署和运行。

4. 掌握ZooKeeper四字命令的使用。

5. 熟练掌握ZooKeeper Shell常用命令的使用。

6. 了解ZooKeeper Java API,能看懂简单的ZooKeeper编程。

实验内容(实验原理、运用的理论知识、算法、程序、步骤和方法)

    实验原理:

部署ZooKeeper集群和实战ZooKeeper通常是为了构建分布式系统中的协调服务。ZooKeeper是一个开源的分布式协调服务,提供高可用、一致性和持久性的数据存储,被广泛用于分布式系统中的配置管理、命名服务、分布式锁等场景。

实验原理可以简要概括如下:

1.分布式协调服务需求: 在分布式系统中,多个节点之间需要协调工作以保证系统的一致性和可用性。ZooKeeper提供了一个可靠的分布式环境,用于存储共享配置、协调节点间的操作、以及提供分布式锁等功能。

2.ZooKeeper集群: ZooKeeper通过构建一个由多个节点组成的集群来提供高可用性。在实验中,你需要部署多个ZooKeeper节点,它们通过选举机制选择一个Leader,其他节点作为Followers。Leader负责处理写操作,而Followers用于处理读操作。这种集群架构确保了即使部分节点失效,整个系统仍然能够正常运行。

3.数据一致性: ZooKeeper保证数据的一致性,即一旦写入成功,所有的节点都能够看到相同的数据。这是通过ZAB(ZooKeeper Atomic Broadcast)协议来实现的,确保在集群中的所有节点上的数据都是一致的。

4.ZooKeeper Watcher机制: ZooKeeper提供了Watcher机制,用于实现对数据节点变更的实时通知。在实战中,你可以利用Watcher来监测特定节点的变化,从而及时做出相应的处理。

5.分布式锁和同步: ZooKeeper还可以用于实现分布式锁,确保在多个节点间对共享资源的互斥访问。这在实际应用中是一个常见的场景,例如在分布式系统中的任务调度、资源分配等方面。

实验步骤:

  1. 规划ZooKeeper集群。

  这里我采用的是最新的zookeeper版本

表4-9  ZooKeeper集群部署规划表

主机名

IP地址

运行服务

软硬件配置

master

192.168.18.100

QuorumPeerMain

内存:4G

CPU:1个2核

硬盘:20G

操作系统:CentOS 7.5

Java:Oracle JDK 8u191

ZooKeeper:ZooKeeper 3.9.1

Eclipse:Eclipse IDE 2018-09 for Java Developers

slave1

192.168.18.101

QuorumPeerMain

内存:4G

CPU:1个2核

硬盘:20G

操作系统:CentOS 7.5

Java:Oracle JDK 8u191

ZooKeeper:ZooKeeper 3.9.1

Eclipse:Eclipse IDE 2018-09 for Java Developers

slave2

192.168.18.102

QuorumPeerMain

内存:4G

CPU:1个2核

硬盘:20G

操作系统:CentOS 7.5

Java:Oracle JDK 8u191

ZooKeeper:ZooKeeper 3.9.1

Eclipse:Eclipse IDE 2018-09 for Java Developers

1.部署ZooKeeper集群。

1)复制模板配置文件zoo_sample.cfg为zoo.cfg

在master机器上使用命令“cp”将ZooKeeper示例配置文件zoo_sample.cfg复制并重命名为zoo.cfg。使用如下命令实现,假设当前目录为“/opt/so/apache-zookeeper-3.9.1-bin”。

cp conf/zoo_sample.cfg conf/zoo.cfg

2)修改配置文件zoo.cfg

读者可以发现,模板中已配置好tickTime、initLimit、syncLimit、dataDir、clientPort等配置项,此处,编者仅在master机器上修改配置参数dataDir和添加配置参数dataLogDir。由于机器重启后,系统会自动清空/tmp目录下文件,所以将存放数据快照的目录更改为某固定目录,将原始的“dataDir=/tmp/zookeeper”修改为“/opt/so/apache-zookeeper-3.9.1-bin/data”;另外,添加事务日志存放路径dataLogDir,设置为“/opt/so/apache-zookeeper-3.9.1-bin/datalog”。修改后的配置文件zoo.cfg内容如图所示。

 修改配置文件zoo.cfg

其次,在master机器上配置ZooKeeper集群地址,在配置文件zoo.cfg最后补充几行内容,如下所示。

server.1=master:2888:3888

server.2=slave1:2888:3888

server.3=slave2:2888:3888

3)创建所需目录和新建myid文件

在上步修改配置文件zoo.cfg中,将存放数据快照和事务日志的目录设置为目录data和datalog,因此需要在master机器上创建这两个目录,使用如下命令实现,假设当前目录为以上步骤操作后的所在目录“/opt/so/apache-zookeeper-3.9.1-bin”。

mkdir data

mkdir datalog

然后,在数据快照目录下新建文件myid并填写ID。在master机器配置项dataDir指定目录下创建文件“myid”,例如在dataDir目录“/opt/so/apache-zookeeper-3.9.1-bin/data”下使用命令“vim”新建文件myid,并将其内容设置为“1”。之所以为“1”,是由于配置文件zoo.cfg中“server.id=host:port:port”配置项master机器对应的“id”为“1”。

同步ZooKeeper文件至slave1、slave2

3.启动ZooKeeper集群。

在ZooKeeper集群的每个节点上,在root用户下使用命令“zkServer.sh start”来启动ZooKeeper,使用的命令及运行效果如图所示,从图中可以看出,3个节点均显示“Starting zookeeper … STARTED”信息。

4.验证ZooKeeper集群。

启动后可查看zookeeper.out的日志。由于ZooKeeper集群启动的时候,每个节点都试图去连接集群中的其它节点,故存在启动时后边的节点还没启动,所以会出现异常的日志,这是正常的。启动选出一个Leader后就稳定了。

查看ZooKeeper是否部署成功的第1种方法是:在各个节点上通过“zkServer.sh status”命令查看状态,包括集群中各个节点的角色,使用命令及运行效果如图4-16所示,从图4-16中可以看出,slave1是Leader。

5.使用ZooKeeper四字命令。

ZooKeeper四字命令是一些短命令,以"conf", "cons", "dump", "env", "reqs", "ruok", "stat", 和 "wchs"等形式存在。这些命令可以通过telnet或nc(netcat)等工具连接到ZooKeeper的客户端端口,用于获取有关ZooKeeper服务器状态和执行一些操作。以下是这些命令的简要概括:

conf: 获取服务器配置信息。

cons: 列出连接到服务器的客户端的详细信息。

dump: 打印未经处理的会话和请求的详细信息。

env: 打印有关服务器环境的详细信息。

reqs: 列出未经处理的请求。

ruok: 测试服务器是否处于运行状态。

stat: 获取服务器的详细信息和统计数据。

wchs: 列出服务器上的观察者(watchers)。

6.使用ZooKeeper Shell常用命令。

    ZooKeeper Shell提供了一组命令,用于与ZooKeeper集群进行交互。这些命令可通过命令行或脚本使用。以下是一些常用的ZooKeeper Shell命令的简要概括:

create: 创建一个新的ZooKeeper节点。

get: 获取指定节点的数据。

set: 设置指定节点的数据。

delete: 删除指定节点。

ls: 列出指定路径下的所有节点。

stat: 获取指定节点的详细信息。

getAcl: 获取指定节点的访问控制列表。

setAcl: 设置指定节点的访问控制列表。

quit: 退出ZooKeeper Shell。

7. 关闭ZooKeeper集群。

实验结果与分析

实验结果:

集群搭建: 成功搭建了多个ZooKeeper节点的集群,确保它们能够相互通信和协同工作。

Leader选举: 集群中的节点成功进行了Leader的选举,确保了高可用性和容错性。

数据一致性: 在集群中写入数据后,观察到数据在所有节点上保持一致。

Watcher机制: 成功利用Watcher机制监测节点的变化,确保实时通知和响应。

分布式锁: 实现了基于ZooKeeper的分布式锁,并验证了在多个节点上的互斥访问。

分析与观察:

性能: 通过观察系统的响应时间和吞吐量,分析ZooKeeper集群在负载情况下的性能表现。

故障恢复: 模拟节点故障,观察系统对故障的快速恢复能力,确保选举新的Leader和数据一致性。

Watcher延迟: 观察Watcher机制的延迟情况,确保通知的实时性满足系统的需求。

访问控制: 验证了ZooKeeper的访问控制机制,确保只有授权的用户能够进行敏感操作。

负载均衡: 在实际应用场景中,分析集群节点之间的负载情况,确保各节点工作均衡。

注意事项与改进方向:

配置调优: 考虑ZooKeeper的配置参数,根据实验结果进行调优,以提高性能和稳定性。

监控与日志: 部署监控工具,观察节点的资源利用情况,并定期审查ZooKeeper的日志以便及时发现和解决问题。

容量规划: 根据实验结果和分析,进行容量规划,确保集群能够满足未来的扩展需求。

安全性考虑: 进一步审查访问控制机制,确保系统的安全性,考虑加密通信等安全增强措施。

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

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

相关文章

sed命令

目录 一、sed 1.sed命令选项 2.语法选项 3.sed脚本格式 4.搜索替代 5.分组后向引用 1.提取版本号: 2.提取IP地址 3.提取数字权限 6.变量 二、免交互 1.多行重定向 2.免交互脚本 总结:本章主要介绍了seq和免交互的用法及相关知识 一、sed s…

业务建模工具BPMN

目录 一、什么是BPMN 二、业务流程梳理的重要作用 三、BPMN的全图 四、BPMN的组成 1.BPMN的基本元素(2.0) 1.1 流对象(Flow Objects) 1.2 数据(Data) 1.3 连接对象(Connecting Objects&a…

allure修改logo 自定义

无论pytest还是httprunner都适用allure生成报告。那我们就有必要对allure报告进行一些定制。我们先修改logo: 1、给allure.yml插件custom-logo-plugin 找到allure安装的位置,在config文件夹下有一个allure.yml的配置文件。打开它,在最后添加…

香港科技大学广州|智能制造学域博士招生宣讲会—华中科技大学专场

时间:2023年12月08日(星期五)15:00 地点:华中科技大学大学生活动中心A座603 报名链接:https://www.wjx.top/vm/mmukLPC.aspx# 宣讲嘉宾: 胡鹏程 副教授 https://facultyprofiles.hkust-gz.edu.cn/faculty-…

福州大学《嵌入式系统综合设计》 实验八:FFMPEG视频编码

一、实验目的 掌握使用算能平台进行视频编码的流程,包括开发主机环境与云平台的配置,视频编码程序的编写与理解,代码的编译、运行以及学习使用码流分析工具分析视频压缩码流等。 二、实验内容 搭建实验开发环境,编译并运行编码…

极客大挑战2023 Web方向题解wp 全

最后排名 9/2049。 玩脱了,以为28结束,囤的一些flag没交上去。我真该死啊QAQ EzHttp 前言:这次极客平台太安全了谷歌不给抓包,抓包用burp自带浏览器。 密码查看源码->robots.txt->o2takuXX’s_username_and_password.txt获…

功率放大器在超声医疗中的应用有哪些

随着科技的进步和医疗技术的不断发展,功率放大器在超声医疗领域中发挥着重要的作用。超声医疗是一种以超声波作为媒介的医学诊断和治疗技术,具有无创、非放射性和实时性等优势。以下是关于功率放大器在超声医疗中的应用的详细介绍。 一、超声成像&#x…

java反射和注解3-仿照retrofit组装接口参数

本片文章将用反射和注解仿照retrofit只需要传入一个带有给定注解的接口,通过调用接口就能直接将传入的数据和注解进行结合,生成对应参数 1,自定义注解 对字段的修饰 Retention(RetentionPolicy.RUNTIME) Target(ElementType.PARAMETER) pu…

vue el-table表格中每行上传文件(上传简历)操作

1、HTML中 <el-table :data"formInfo.userListDto" border stripe max-height"400"><el-table-column type"index" label"序号" width"50"> </el-table-column><el-table-column prop"realName&q…

filebeat 日志收集工具

elk&#xff1a;filebeat日志收集工具和logstash相同。 filebeat是一个轻量级的日志收集工具&#xff0c;所使用的系统资源比logstash部署和启动时使用的资源要小的多。 filebeat可以运行在非Java环境。他可以代理logtash在非java环境上收集日志。 filebeat无法实现数据的过…

Edge浏览器的跨域设置

关闭安全策略 复制一个浏览器的快捷方式&#xff0c;修改它的目标信息 在目标路径后加上这段命令&#xff1a;" --disable-web-security --user-data-dirD:/edgeCros" 没有引号&#xff0c;注意空格&#xff0c;D:/edgeCros是自定义文件夹&#xff0c;用来存放数据 …

神经网络:脑科学中功能MRI成像的应用及其一些相关概念

文章目录 一、MRI成像简介核磁共振成像&#xff08;MRI&#xff09;侵入式成像功能磁共振成像&#xff08;fMRI&#xff09;血氧水平依赖&#xff08;BOLD&#xff09;效应对比基线状态代理指标 二、fMRI具有延迟性及其解决方案原因解决方法 三、fMRI 数据处理1. 数据预处理2. …

2020年3月2日 Go生态洞察:Go协议缓冲区的新API发布

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

看懂YOLOv7混淆矩阵的含义,正确计算召回率、精确率、误检率、漏检率

文章目录 1、准确率、精确率、召回率、误报率、漏报率概念及公式1.1 准确率 Accuracy1.2 精确率 Precision1.3 召回率 Recall1.4 F1-Score1.5 误检率 false rate1.6 漏检率 miss rate 2、YOLOv7混淆矩阵分析 1、准确率、精确率、召回率、误报率、漏报率概念及公式 重点参考博文…

堆结构的应用:随时取得数据流中的中位数

大根堆和小根堆配合 实现 第一个数字直接入大根堆 对于后面的数字&#xff0c; 如果数字 < 大根堆的堆顶&#xff0c;这个数字入大根堆 否则入小根堆 在数字入堆的同时&#xff0c;进行大根堆与小根堆的大小的比较&#xff0c;一旦它们两个的大小之差 2&#xff0c;较大…

kernel32.dll动态链接库报错解决方法,提供四种解决kernel32.dll报错的方法

当我们的电脑出现"kernel32.dll是无法找到的"或者"缺少kernel32.dll"这样的错误提示时, 则样的提示都是属于kernel32.dll动态链接库报错&#xff0c;出现这样的错误提示窗口&#xff0c;就说明程序无法成功读取到该动态链接库文件。本篇文章就给大家提供四…

Android flutter项目 启动优化实战(二)利用 App Startup 优化项目和使用flutterboost中的问题解决

背景 书接上回&#xff1a; Android flutter项目 启动优化实战&#xff08;一&#xff09;使用benchmark分析项目 已经分析出了问题: 1.缩短总时长&#xff08;解决黑屏问题、懒启动、优化流程&#xff09;、2.优化启动项&#xff08;使用App Startup&#xff09;、3.提升用…

经济观察与ChatGPT聊了聊 :OpeoAI 的144个小时到底发生了什么

本心、输入输出、结果 文章目录 经济观察与ChatGPT聊了聊 &#xff1a;OpeoAI 的144个小时到底发生了什么前言感恩节&#xff1a;奥特曼在社交媒体上发文&#xff1a;和Quora CEO亚当德安杰洛&#xff08;Adam DAngelo&#xff09;度过了美好的几个小时对话ChatGPT 探寻技术发展…

三季度营收下滑16.3%,网易云音乐如何讲出新故事?

在选择重新回归音乐本身后&#xff0c;网易云音乐(09899.HK)业绩承压的困局写在最新的三季报里。 「不二研究」据网易云音乐三季报发现&#xff1a;今年三季度&#xff0c;网易云音乐净收入同比下滑16.3%。目前&#xff0c;网易云音乐主要面临营收下滑、商业化场景探索尚未形成…

【01】侯小啾python入门计划_导语

侯小啾python入门计划_导语 欢迎大家订阅《侯小啾python入门计划》专栏&#xff0c;本专栏经作者侯小啾精心打造&#xff0c;极致把握初学者心理状态与困境&#xff0c;让小白少走弯路&#xff0c;让大佬快速成长。对于大多数非科班人士而言&#xff0c;Python或是其接触的第一…