栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 前沿技术 > 大数据 > 大数据系统

Zookeeper简介、原理与常用操作

大数据系统 更新时间:发布时间: 百科书网 趣学号
Zookeeper简介 1. zookeeper概述

注:文章中的zookeeper简称zk

1.1.zk简介:

一个分布式开源协调服务框架。用来解决分布式集群应用系统的一致性问题。

1.2.zk特点:

· 一个领导者(leaer),多个跟随者(follower)。

· 只要半数以上节点存活,zk集群就能正常服务。

· 全局数据一致性,client无论连接到那个server,数据都是一致的。

· 更新请求顺序进行,同一client的更新请求按其发送顺序依次执行。

· 数据更新的原子性,更新要么成功,要么失败。

· 数据的实时性,在一定时间范围内,client能读到最新数据。

1.3.zk的数据模型

层次化的树形结构,没有文件和目录而是统称为节点(znode),znode同时兼任了文件和目录的功能。所有的znode构成了层次化的命名空间,是高可用特征的文件系统。

注:zk一般是用来实现协调而不是直接提供存储服务的,这些协调服务一般都是小数据文件,因此znode的存储大小一个被限制在1MB以内。
	并且每个znode都可以通过路径唯一标识
2.Zookeeper工作原理 2.1选举制度

· 由于半数以上节点的要求,zk适合装在奇数节点上。

· zk通过默认机制FastLeaderElection在内部节点中来选举一个leader,其余节点作为follower。

2.1.1选举制度 三 四 概念

三:

服务器id :serverid
服务器编号,编号越大在算法中的权重越大

​ 我们曾创建过一个zkdata文件夹在myid中写入的数字就是我们自己设置的编号

数据id: zxid
存放的最大数据ID,值越大说明数据越新,在选举中的权重越大

​ 一般是相同的,出现网络波动有可能导致某follower没有收到数据导致数据id偏小

逻辑时钟: Epoch
即服务器参加投票的次数

​ 一般相同,当有几台主机长期运行,而引入新节点没有参与过投票逻辑时钟就会很小

优先级:Epoch>zxid>servereid

四:

LOOKING:竞选状态
遵循三号原则

FOLLOWING:随从状态,同步leader状态,参与选票
leader选举出来后,后来进入的会直接将票投给leader,不会考虑自己的权重

OBSERVING:观察状态,同步leader状态,不参与选票
主要作用是在zookeeper访问量较大时,增入进来能够独立进行客户端非事务(读操作)处理,对于事务请求,则会转发给leader服务器进行处理。不会参与任何形式的投票。

LEADER:领导者状态
· 集群工作的核心

3.Zookeeper的监听机制 3.1监听事件

nodedatachanged #节点数据改变

nodecreate #节点创建事件

nodedelete #节点删除事件

nodechildrenchanged #子节点改变事件

3.2监听的使用

注:监听事件依赖于文件管理系统

stat path [watch] 查看节点状态
ls path [watch]
ls2 path [watch]
get path [watch]
#只要带有watch字样的都是监听事件

举个栗子:

ls /test watch

然后我们尝试创建子节点

create /test/tt abc

此时便会触发监听

WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/test

注:触发事件被建立之后,只能被触发一次。

4.Zookeeper的写数据流程

①Client向Zookeeper的server1写数据发送一个写请求;

②如果server1不是leader,那么server1会把请求进一步转发给leader;

③这个leader会将写请求广播给所有server;

④各个server 写成功后就会通知leader;

⑤当leader收到半数以上的server写成功的通知,就说明数据写成功了。写成功后,leader会告诉server1 数据写成功了

⑥server1会进一步通知Client数据写成功了。这时就认为整个写操作成功。

5.Zookeeper客户端操作 5.1客户端的命令 5.1.1连接客户端
默认连接:
zkCli.sh
#默认连接的是localhost:2181本地的zookeeper服务器

指定服务器连接:
zkCli.sh -server master:2181
例:连接主机名为august02的2号主机
zkCli.sh -server august02
5.1.2常见命令
  1. ls – 查看某个目录包含的所有文件
    注:zk没有相对路径的概念,ls后需要接绝对路径
ls /path
  1. ls2 – 查看某个目录包含的所有文件,与ls不同的是会查看到time、version等更详细的信息

  2. create – 创建znode,并设置初始内容

    create -e 创造短暂类型的节点

create /test “my test”
#必须要指定文件存储的内容
create -e /my/a "lueluelue"
#随着创建节点客户端的断开,创建的节点会被删除,可以用来作为服务上下线的感知
  1. get – 获取znode的数据
get /test
  1. set – 修改znode内容
set /my/b "LALALA"
  1. delete – 删除znode
delete /my/a
  1. quit – 退出客户端

  2. help – 帮助命令

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/601294.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号