IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Zookeeper -> 正文阅读

[大数据]Zookeeper

Zookeeper

Zookeeper的概述

Zookeeper是一个开源的分布式协调服务框架,主要用来解决分布式集群中应用系统的一致性问题和数据管理问题

Zookeeper的特点

Zookeeper本质上是一个分布式文件系统,适合存放小文件,也可以理解为一个数据库

Zookeeper的架构

Zookeeper集群是一个基于主从架构的高可用集群

每个服务器承担如下三种角色中的一种

Leader 一个Zookeeper集群同一时间只会有一个实际工作的Leader,它会发起并维护与各Follwer及Observer间的心跳。所有的写操作必须通过Leader完成再由Leader将写操作广播给其他服务器

Follower 一个Zookeeper集群可能同时存在多个Follower,它会响应Leader的心跳,Follower可直接处理并返回客户端的读请求,同时会将写请求转发给Leader处理,并且负责在Leader处理写请求时对请求进行投票

Observer角色与Follower类似,但是无投票权。

Zookeeper安装过程

第一步:下载Zookeeper安装包

第二步:解压

解压zookeeper的压缩包到/export/server路径下去,然后准备进行安装

cd /export/software
tar -zxvf zookeeper-3.4.9.tar.gz -C ../servers

修改配置文件

cd	/export/servers/zookeeper-3.4.9/conf/
cp zoo_sample.cfg zoo.cfg
mkdir -p /export/servers/zookeeper-3.4.9/zkdatas/

vim zoo.cfg

dataDir=/export/servers/zookeeper-3.4.9/zkdatas
#	保留多少个快照
autopurge.snapRetainCount=3
#	日志多少小时清理一次
autopurge.purgeInterval=1
#	集群中服务器地址
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888

第四步:添加myid配置

在第一台机器的

/export/servers/zookeeper-3.4.9/zkdatas/这个路径下创建一个文件,文件名为myid,文件内容为1

echo 1 > /export/servers/zookeeper-3.4.9/zkdatas/myid

第五步:安装包分发并修改myid的值

scp -r /export/servers/zookeeper-3.4.9/ node02:/export/servers/
scp -r /export/servers/zookeeper-3.4.9/ node03:/export/servers/

第二台机器上修改myid的值为2

echo 1 > /export/servers/zookeeper-3.4.9/zkdatas/myid

第二台机器上修改myid的值为3

第六步:三台机器启动zookeeper服务

三台机器启动zookeeper服务

这个命令三台机器都要执行

/export/servers/zookeeper-3.4.9/bin/zkServer.sh start

查看启动状态

/export/servers/zookeeper-3.4.9/bin/zkServer.sh status

zookeeper的数据模型

Zookeeper的数据模型,在结构上和标准文件系统的非常相似,拥有一个层次的命名空间。都是采用树形层次结构

Zookeeper树中的每个结点都被称为一个Znode,和文件系统的目录树一样,Zookeeper树中的每个结点可以拥有子节点。

但也有不同之处

Znode兼具文件和目录两种特点

Znoded村数据大小有限制

Znode通过路径引用,路径必须是绝对的

每个Znode由三个部分组成

stat:此状态为

data

children

Zookeeper的Shell客户端操作

登录Zookeeper

先进入安装目录

bin/zkCli.sh -server node01:2181
# node01是主机名
# 2181是端口号

Zookeeper客户端操作命令

命令说明参数
create [-s] [-e] path data acl创建Zonde-s指定是顺序结点 -e指定是临时节点
ls path [watch]列出Path下所有的Znode
get path [watch]获取Path对应的Znode的数据和属性
ls2 path [watch]查看Path下所有的Znode一起子Znode的属性
set path data [version]更新结点version数据版本
delete path[version]删除结点,如果要删除的节点有子节点,则无法删除version数据版本
rmr path删除结点,如果有子Znode则递归删除
setquota -n|-b val path修改Znode配额-n设置子节点最大个数 -b设置节点数据最大长度
history列出历史记录

操作实例

列出Path下的所有的Znode

ls /

创建永久节点

# 在当前目录下创建一个hello 目录 携带的参数是 world
create /hello world

创建临时结点

create -e /abc 123

创建永久序列化节点:

create -s /zhangsan boy

创建临时序列化节点

create -e -s /lisi boy

修改节点数据

set /hello zookeeper

删除结点,如果要删除的节点有子Znode则无法删除

delete /hello

删除结点,如果有子Znode则递归删除

rmr /abc

列出历史记录

history

节点属性

每个Znode都包含了一系列的属性,通过命令get,可以获得节点的属性

dataVersion:数据版本号,每次对节点进行set操作,dataVersion的值都会增加1(即使设置的是相同的数据),可有效避免了数据更新时出现的先后顺序的问题

cversion:子节点的版本号,当znode的子节点有变化时,cversion的值就会增加1

aclVersion:ACL的版本号

cZxid:Znode创建的事物id。

mZxid:Znode被修改的事物id,即每次对id进行修改都会更新mZxid

  • 对于zk来说,每次的变化都会产生一个唯一的事物id,zxid(ZooKeeper Transaction Id)。通过zxid,可以确定更新操作的先后顺序,如果zxid1小于zxid2,说明zxid1操作先与zxid2发生,zxid对于整个zk都是唯一的

time:节点创建时的时间戳

mtime:节点最新一次更新发生时的时间戳

ephemeralOwner:如果该节点为临时结点,ephemeralOwner值表示与该节点绑定的session id.如果不是,ephemeralOwner值为0

Zookeeper的watch机制

  • 通知类似于数据库中的触发器,对某个Znode设置Watcher,当Znode发生变化的时候,WatchManager会调用对应的Watcher
  • 当Znode发生删除,修改,创建,子节点待修改的时候,对应的Watcher会得到通知

Watcher的特点:

  • 一次性触发一个Watcher只会触发一次,如果需要继续监听,则需要再吃添加Watcher
  • 事件封装:Watcher得到的事件是被封装过的,包括三个内容keeperState.eventType,path

Zookeeper的Java的JAVAAPI操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0DSATJAO-1628908948738)(C:\Users\WANG\AppData\Roaming\Typora\typora-user-images\image-20210813163316729.png)]

节点的操作

创建永久节点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aAWNGeI0-1628908948741)(C:\Users\WANG\AppData\Roaming\Typora\typora-user-images\image-20210813163621546.png)]

创建临时节点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uHsJH4WG-1628908948742)(C:\Users\WANG\AppData\Roaming\Typora\typora-user-images\image-20210813181343690.png)]

注意:临时节点close之后就会消失

修改节点数据

节点下面添加数据与修改是类似的,一个节点下面会有一个数据,新的数据会覆盖旧的数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kLYiKsSk-1628908948745)(C:\Users\WANG\AppData\Roaming\Typora\typora-user-images\image-20210813182034647.png)]

节点数据查询

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jqZeL1Sg-1628908948745)(C:\Users\WANG\AppData\Roaming\Typora\typora-user-images\image-20210813182451912.png)]

节点watch机制

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dTcYLZLH-1628908948746)(C:\Users\WANG\AppData\Roaming\Typora\typora-user-images\image-20210813182757756.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8qrYVXxx-1628908948747)(C:\Users\WANG\AppData\Roaming\Typora\typora-user-images\image-20210813182926249.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ri1bE9R9-1628908948747)(C:\Users\WANG\AppData\Roaming\Typora\typora-user-images\image-20210813183828644.png)]

会覆盖旧的数据

[外链图片转存中…(img-kLYiKsSk-1628908948745)]

节点数据查询

[外链图片转存中…(img-jqZeL1Sg-1628908948745)]

节点watch机制

[外链图片转存中…(img-dTcYLZLH-1628908948746)]

[外链图片转存中…(img-8qrYVXxx-1628908948747)]

[外链图片转存中…(img-ri1bE9R9-1628908948747)]

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:39:36  更:2021-08-15 15:41:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 8:44:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码