【Hadoop生态圈】3.Zookeeper入门教程及集群环境搭建

2023-10-31

1.简介

  ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。提供了分布式独享锁、选举、队列的接口。

Zookeeper特性

  • 读写分离: Zookeeper 是一个由多个 server 组成的集群,一个 leader,多个 follower,分布式读由 follower,写由 leader 实施。
  • 顺序一致性:从同一客户端发起的事务请求,最终将会严格地按照顺序被应用到 ZooKeeper 中去。
  • 原子性:所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的,也就是说,要么整个集群中所有的机器都成功应用了某一个事务,要么都没有应用。
    单一视图:无论客户端连到哪一个 ZooKeeper 服务器上,其看到的服务端数据模型都是一致的。
  • 可靠性: 一旦服务端成功地应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会被一直保留下来。
  • 实时性(最终一致性): Zookeeper 仅仅能保证在一定的时间段内,客户端最终一定能够从服务端上读取到最新的数据状态。

Znode数据模型
  zookeeper的数据节点可以视为树状结构的目录,树中的各节点被称为znode(即zookeeper node),一个znode可以有多个子节点,可以说 zookeeper 中的所有存储的数据是由 znode 组成的,并以 key/value 形式存储数据。整体结构类似于 linux 文件系统的模式以树形结构存储,其中根路径以 / 开头。
在这里插入图片描述

znode节点类型

  • PERSISTENT: 持久类型,如果不手动删除 是一直存在的
  • PERSISTENT:_SEQUENTIAL: 持久有序,自增
  • EPHEMERAL: 临时 客户端 session 失效就会随着删除节点 没有子节点
  • EPHEMERAL_SEQUENTIAL: 临时有序,自增

  创建 znode 时设置顺序标识,znode 名称后会附加一个值顺序号是一个单调递增的计数器,由父节点维护在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺序号推断事件的顺序。

下面是网上找的一张关于Zookeeper体系的图片。
在这里插入图片描述

2.环境准备

  zookeeper集群节点数推荐为奇数(2n+1)个,因为如果为偶数个节点,当有一半节点发生故障时,由于没有足够的节点数来选举新的leader节点(要求半数以上节点选举,不包含半数),会导致整个集群无法工作。如果只能部署两个节点,则不如使用单节点,因为两个节点的集群,只要任意一个节点发生故障,则集群无法工作。

集群规则为:2N + 1 台,N > 0,即最少需要 3 台。本文的集群环境搭建用到了3台机器。

节点类型 节点主机名 节点IP地址
主节点 master 192.168.239.128
从节点 slave1 192.168.239.129
从节点 slave2 192.168.239.130

修改3台机器的/etc/hosts文件
在启动集群时,主节点需要通过主机名远程访问从节点,所以需要让主节点能够识别从节点的主机名。

vi /etc/hosts
192.168.239.128 master
192.168.239.129 slave1
192.168.239.130 slave2

zookeeper官网下载地址: 点我跳转

本文用的版本是3.8.0,下载完上传文件到master节点服务器上面的/home/soft目录下并解压。

cd /home/soft
tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz

3.修改Zookeeper配置文件

cd /home/soft/apache-zookeeper-3.8.0-bin/conf
#复制配置文件
cp zoo_sample.cfg zoo.cfg
#创建数据保存目录
mkdir /home/soft/apache-zookeeper-3.8.0-bin/data
#编辑配置文件
vi zoo.cfg

在zoo.cfg文件尾部添加下面4行属性,然后保存

dataDir=/home/soft/apache-zookeeper-3.8.0-bin/data
server.0=master:2888:3888
server.1=slave1:2888:3888
server.2=slave2:2888:3888

4.复制安装包到从节点并设置myid

从节点的/home/soft必须存在,zoo.cfg配置文件中的server参数后面指定的编号为节点的唯一Id,需要手动创建myid文件保存id

scp -rq /home/soft/apache-zookeeper-3.8.0-bin slave1:/home/soft
scp -rq /home/soft/apache-zookeeper-3.8.0-bin slave2:/home/soft

master机器

echo 0 > /home/soft/apache-zookeeper-3.8.0-bin/data/myid

slave1机器

echo 1 > /home/soft/apache-zookeeper-3.8.0-bin/data/myid

slave2机器

echo 2 > /home/soft/apache-zookeeper-3.8.0-bin/data/myid

5.启动集群

依次在3个节点上面都启动zk服务。

/home/soft/apache-zookeeper-3.8.0-bin/bin/zkServer.sh start

在这里插入图片描述

在3台机器上面分别使用jps都可以看到QuorumPeerMain服务表示集群启动正常了。
在这里插入图片描述

停止命令

/home/soft/apache-zookeeper-3.8.0-bin/bin/zkServer.sh stop

6.zkCli常用命令

zkCli是用来连接ZooKeeper服务器操作数据的脚本工具。

/home/soft/apache-zookeeper-3.8.0-bin/bin/zkCli.sh

在这里插入图片描述
zkCli常用的命令如下.

命令 描述
help 查看命令帮助
ls 查看目录
create 创建节点
get 获取节点数据
set: 修改节点数据
delete 删除节点数据
rmr 递归删除带有子节点的节点

创建节点
格式: create [-e] [-s] path data(可选)
-e 创建临时节点,一旦会话结束,则节点自动删除
-s 创建带有序列号的节点,带有-s的create命令会自动为节点增加一个序列号,
递增后缀,可以通过这个判断节点创建的先后顺序。
-e和-s可以组合使用。

以下创建了config节点,并在config节点下创建db.username节点并赋值为root

create  /config
create  /config/db.username root

获取节点数据
格式: get [-s] [-w] path
-s 查看节点所有信息:数据信息+节点属性值
-w 查看节点数据信息(不加参数默认是-w)

get -s -w /config/db.username

在这里插入图片描述
第一行为这个节点的数据内容,其它的参考下面列表

参数 描述
cZxid 节点创建时的zxid
ctime 节点创建时的时间戳
mZxid 节点最新一次更新发生时的zxid
mtime 节点最新一次更新发生时的时间戳
pZxid 该节点的子节点(或该节点)的最近一次 创建 / 删除 的时间戳对应
cversion 其子节点的更新次数
dataVersion 节点数据的更新次数
aclVersion 节点ACL(授权信息)的更新次数
ephemeralOwner 如果该节点为临时节点,ephemeralOwner值表示与该节点绑定的会话ID,如果该节点不是临时节点,ephemeralOwner值为0x0
dataLength 数据长度
numChildren 子节点的数量

修改节点数据
修改完数据后执行get查看节点控制台会打印admin

set /config/db.username admin

删除节点
递归删除包含子节点的节点

rmr /config

删除没有子节点的节点

delete  /config/db.username

【Hadoop生态圈】其它文章如下,后续会继续更新

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Hadoop生态圈】3.Zookeeper入门教程及集群环境搭建 的相关文章

  • VMware虚拟机上如何设置windows7虚拟系统与主机时间不同?

    每次打开虚拟机时 windows虚拟机的时间老是与主机时间相同 就很烦 如下设置虚拟机与主机时间不同步 在搜索栏输入 管理工具 2 打开管理工具 gt 服务 3 找到VMware Tools做如下设置 4 找到Windows Time做如下
  • AIX 软件安装与维护

    1 AIX 软件产品 2 软件包的构成 由一个或者多个package构成一个完整的LPP 一个LPP是一个完整的软件产品 这个软件包含与这个LPP相关的所有Package 一个软件包是由一组具有共同功能的文件集而组成的一个可单独安装的镜像

随机推荐

  • 异常的深入研究与分析(2)

    本文主要是关于异常的面试题目 出自前几年的迅雷 支付宝等名企的笔试题目 内容由金丝燕网原创编辑 转载请注明链接 题目一 考察异常类的继承结构 那个类是所有异常的基础类 A String B Error C Throwable D Runti
  • 铝电解电容的寿命计算(纹波电流法)手把手教你

    本文教你通过纹波电流预测铝电解电容的寿命 计算方法来自Nichicon 所以以Nichicon的电解电容为例 不同厂家的计算公式可能稍有不同 首先选一款铝电解电容为例 这里选择常见的LGN系列3000h 105 420V 470uF的电容
  • matlab找出二维矩阵中最大值的位置或者最小值的位置

    matlab寻找最大值或者最小值是通过max和min命令 对应二维矩阵寻找最大元素就是max max A 注意二维矩阵要写两个max 找对应位置用find函数 举个例子 gt gt A 1 2 3 4 5 6 A 1 2 3 4 5 6 g
  • android 为什么使用dp单位,它的真正优势在哪里?

    一些新手开发人员 不是很明白dp的真正好处 只是知道这样用 那么今天我用我的理解来解释下 有不对之处 欢迎指正 什么是dp dp是一种与像素密度无关的单位 那什么是像素密度呢 先来解释下像素密度 像素密度 就是所谓的dpi 每英寸像素的数量
  • 零基础入门语义分割-Task1 赛题理解

    1 3 数据标签 赛题为语义分割任务 因此具体的标签为图像像素类别 在赛题数据中像素属于2类 无建筑物和有建筑物 因此标签为有建筑物的像素 赛题原始图片为jpg格式 标签为RLE编码的字符串 RLE全称 run length encodin
  • Chrome OS 初体验

    今天Google放出了Chrome OS的源码 很快网上有人把它编译成功在虚拟机上跑了起来 有朋友第一时间把虚拟镜像下载了 于是搞来一份 立刻开始体验 安装过程就不多说了 可以参考谷奥上的Chromium OS 安装教程 我用的是VMWar
  • Vue中replace的用法

    Vue js V 啥也不说了 就是这么牛逼
  • ps 2019安装破解以及添加CUR和ICO插件

    下载最新版 2019版 的PS后 只能使用和登陆 挺麻烦的 就想着破解来着 在网上搜索了一大圈 终于解决了 使用之前的替换amtlib dll的方式不适用了 需要替换ps的启动程序 ps 64位的安装路径为C Program Files A
  • <van-field>使用方案

    1 官方示例
  • js += 含义(小知识)

    是连接复值 s 5 表示把s的值 5后复值给s若s是字符串 则是连接后赋值 s 5 就是将s字符串的值连接上字符串5后赋值给s s 5 若s为字符串 则同s 5 因为JS是弱变量 会自动转5为 5 与s s 5 语句同意 转载于 https
  • 《数据库系统内 幕》分布式系统

    分布式部分 章8 分布式系统抽象 章9 故障 无超时的故障检测器 phi增量故障检测器 章10 领导者选举 选举过程 选举规则 章11 以数据为中心的一致性模型 单操作一致性模型 客户为中心的一致性 会话模型 复制协议 基于主备份协议的复制
  • Linux国内环境下安装kubeadm、kubelet、kubectl

    因为项目需要用Kubernetes来改版底层的Docker 所以一边写完成现在的任务一边继续学习Kubernetes 现有的一些文档和Kubernetes中文社区的中文文档都没有很详细的初期安装部署环境的教程 所以建议直接去官网看文档 当然
  • 优秀网站源码、编程源码下载网站大集中

    1 51源码 http www 51aspx com 2 源码之家 http www codejia com 3 源码网 http www codepub com 4 虾客源码 http www xkxz com 5 多多源码 http w
  • 牛客SQL练习三

    21查找所有员工自入职以来的薪水涨幅情况 题目描述 查找所有员工自入职以来的薪水涨幅情况 给出员工编号emp no以及其对应的薪水涨幅growth 并按照growth进行升序 CREATE TABLE employees emp no in
  • Unity Vuforia(高通)AR全流程

    Unity Vuforia播放视频全过程 从Unity的安装到打包 一 安装Unity 1 点击安装地址下载Unity Hub 下载好之后点击安装 2 从Unity Hub进去安装Unity 要先注册登陆账号 安装完后是这样的 二 新建项目
  • Vue+Element-UI Table表头排序

    Vue Element UI Table表头排序 Vue代码 定义后台需要接受的排序属性 排序sortChange Vue代码
  • js控制输入框

    转自 http www pinlue com article 2019 11 2221 409812495947 html
  • 【C++11】——右值引用、移动语义

    目录 1 基本概念 1 1 左值与左值引用 1 2 右值和右值引用 1 3 左值引用与右值引用 2 右值引用实用场景和意义 2 1 左值引用的使用场景 2 2 左值引用的短板 2 3 右值引用和移动语义 2 3 1 移动构造 2 3 2 移
  • 推荐算法(一):协同过滤系列

    一 协同过滤 collaborative filtering 一种ItemCF推荐baseline 1 输入 user item相关矩阵 2 中间结果 item间相似度计算 item i与item j间相似度 分子 与二者均有关联的user
  • 【Hadoop生态圈】3.Zookeeper入门教程及集群环境搭建

    文章目录 1 简介 2 环境准备 3 修改Zookeeper配置文件 4 复制安装包到从节点并设置myid 5 启动集群 6 zkCli常用命令 1 简介 ZooKeeper是一个分布式的 开放源码的分布式应用程序协调服务 是Google的