当前位置: 首页 > news >正文

【大数据技术基础 | 实验五】ZooKeeper实验:部署ZooKeeper

在这里插入图片描述

文章目录

    • 一、实验目的
    • 二、实验要求
    • 三、实验原理
    • 四、实验环境
    • 五、实验步骤
      • (一)安装JDK
      • (二)修改ZooKeeper配置文件
      • (三)启动ZooKeeper集群
    • 六、实验结果
    • 七、实验心得


一、实验目的

掌握ZooKeeper集群安装部署,加深对ZooKeeper相关概念的理解,熟练ZooKeeper的一些常用Shell命令。

二、实验要求

部署三个节点的ZooKeeper集群,通过ZooKeeper客户端连接ZooKeeper集群,并用Shell命令练习创建目录,查询目录等。

三、实验原理

ZooKeeper分布式服务框架是Apache Hadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

ZooKeeper是以Fast Paxos算法为基础的。

ZooKeeper集群的初始化过程:集群中所有机器以投票的方式(少数服从多数)选取某一台机器作为leader(领导者),其余机器作为follower(追随者)。如果集群中只有一台机器,那么就这台机器就是leader,没有follower。

ZooKeeper集群与客户端的交互:客户端可以在任意情况下ZooKeeper集群中任意一台机器上进行读操作;但是写操作必须得到leader的同意后才能执行。

ZooKeeper选取leader的核心算法思想:如果某服务器获得N/2+1票,则该服务器成为leader。N为集群中机器数量。为了避免出现两台服务器获得相同票数(N/2),应该确保N为奇数。因此构建ZooKeeper集群最少需要3台机器。

四、实验环境

  • 云创大数据实验平台:
    在这里插入图片描述
  • Java 版本:jdk1.7.0_79
  • Hadoop 版本:hadoop-2.7.1
  • ZooKeeper 版本:zookeeper-3.4.6

五、实验步骤

本实验主要介绍ZooKeeper的部署,ZooKeeper一般部署奇数个节点,部署方法包主要含安装JDK、修改配置文件、启动测试三个步骤。

(一)安装JDK

下载安装JDK。因为ZooKeeper服务器在JVM上运行。学校的云创大数据实验服务器内已经安装JDK了所以不需要配置,而且一般的云服务器都会自带Java和Python环境,如果是自己本地的虚拟机的话就需要配置环境。简单的讲一下配置JDK的过程:

  1. 首先,到Oracle官网下载对应的jdk版本的压缩包
  2. 接着,通过WinSCP工具将jdk压缩包上传到虚拟机上
  3. 然后,在虚拟机内解压刚才的jdk压缩包
  4. 然后,进入etc/profile文件内配置jdk环境变量
  5. 最后,重启虚拟机并检查jdk环境是否配置成功

(二)修改ZooKeeper配置文件

首先配置master,slave1,slave2之间的免密和各个机器的/etc/hosts文件,可参考:【大数据技术基础 | 实验一】配置SSH免密登录

修改ZooKeeper的配置文件,步骤如下:
进入解压目录下,把conf目录下的zoo_sample.cfg复制成zoo.cfg文件。

cd /usr/cstor/zookeeper/conf
cp zoo_sample.cfg zoo.cfg

在这里插入图片描述

打开zoo.cfg并修改和添加配置项目,如下:

vim zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the port at which the clients will connect
clientPort=2181
# the directory where the snapshot is stored.
dataDir=/usr/cstor/zookeeper/data
dataLogDir=/usr/cstor/zookeeper/log
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

在这里插入图片描述

然后,新建两个目录。

mkdir /usr/cstor/zookeeper/data
mkdir /usr/cstor/zookeeper/log

/usr/cstor/zookeeper目录传到另外两台机器上。

scp -r /usr/cstor/zookeeper root@slave1:/usr/cstor
scp -r /usr/cstor/zookeeper root@slave2:/usr/cstor

在这里插入图片描述

然后,分别在三个节点上的/usr/local/zookeeper/data目录下创建一个文件:myid

vim /usr/cstor/zookeeper/data/myid

分别在myid上按照配置文件的server.中id的数值,在不同机器上的该文 件中填写相应过的值,如下:

  • master 的myid内容为1
  • slave1 的myid内容为2
  • slave2 的myid内容为3

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(三)启动ZooKeeper集群

然后,启动ZooKeeper集群,进入客户端验证部署完成。分别在三个节点进入bin目录,启动ZooKeeper服务进程:

cd /usr/cstor/zookeeper/bin
./zkServer.sh start

在各机器上依次执行脚本,查看ZooKeeper状态信息,两个节点是follower状态,一个节点是leader状态:

./zkServer.sh status

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在其中一台机器上执行客户端脚本:

./zkCli.sh -server master:2181,slave1:2181,slave2:2181

在这里插入图片描述

在客户端shell下执行创建目录命令:

create /testZk ""

/testZk目录写数据:

set /testZk 'aaa'

读取/testZk目录数据:

get /testZk

删除/testZk目录:

rmr /testZk

在客户端shell下用quit命令退出客户端:

quit

在这里插入图片描述

六、实验结果

各个节点执行jps命令查看Java进程,有QuorumPeerMain进程代表该节点ZooKeeper安装成功,如图所示。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在客户端Shell下查看ZooKeeper集群目录,输入命令:ls /,查看ZooKeeper集群目录列表结果如图所示。

在这里插入图片描述

七、实验心得

  在本次ZooKeeper部署实验中,通过搭建包含三个节点的ZooKeeper集群,进一步理解了ZooKeeper在分布式系统中的角色和功能。

  首先,实验过程涵盖了JDK的安装、ZooKeeper配置文件的修改、节点间的免密设置等步骤。配置文件设置了基础的集群参数,如tickTimeinitLimitsyncLimit等,还指定了不同节点的端口信息及数据存储目录。各节点的数据文件myid的创建也体现了ZooKeeper的分布式集群特性,通过唯一ID标识每个节点的角色。

  其次,在启动集群后,通过客户端Shell操作成功验证了集群的正常运行状态。利用ZooKeeper客户端执行了目录创建、数据写入和读取、以及目录删除的基本操作,熟悉了ZooKeeper的基本命令。

  实验结果显示各节点正常启动了ZooKeeper进程,并正确识别了Leader和Follower节点。这次实验帮助加深了对ZooKeeper集群管理和分布式协调服务的理解,为分布式应用开发奠定了基础。

:以上文中的数据文件及相关资源下载地址:
链接:https://pan.quark.cn/s/5100e953755d
提取码:amiC


http://www.mrgr.cn/news/59131.html

相关文章:

  • 记一次:使用使用Dbeaver连接Clickhouse
  • ReactOS系统中平衡二叉树按从左到右的顺序找到下一个结点
  • 【Android】Kotlin教程(3)
  • 蓝桥杯模块(四)数码管动态显示
  • JS轮播图实现自动轮播、悬浮停止轮播、点击切换,下方指示器与图片联动效果
  • docker搭建mysql多主多从环境
  • 028_Comma_Separated_List_in_Matlab中的逗号分割列表
  • 【C++初阶】一文讲通C++内存管理
  • 数据结构与算法分析:你真的理解排序算法吗——桶排序(代码详解)
  • redis高级篇之IO多路复用select方法简介 第174节答疑
  • 基于DDPG算法的股票量化交易
  • 【项目实战】HuggingFace初步实战,使用HF做一些小型任务
  • 如何快速绘制高效的业务架构图(三步完成)
  • 【动手学深度学习】8.5 循环神经网络从零开始实现
  • 跟我学C++中级篇——volatile的探究
  • 大厂项目经理推荐的10款常用的项目管理软件值得你收藏
  • Java中TreeSet的使用
  • 代码随想录算法训练营第二十七天|Day27 贪心算法
  • 博图软件的使用(一)
  • 006:看图软件ACDSeePhotoStudio2019安装教程
  • Python中的Bloom Filter算法详解
  • C/C++(七)RAII思想与智能指针
  • Java-图书管理系统
  • 专题十六_栈_队列_优先级队列_算法专题详细总结
  • java核心技术点都有哪些
  • 【C++ 真题】B2099 矩阵交换行