zookeeper介绍

上传人:优*** 文档编号:119961216 上传时间:2022-07-16 格式:PPT 页数:45 大小:896.50KB
收藏 版权申诉 举报 下载
zookeeper介绍_第1页
第1页 / 共45页
zookeeper介绍_第2页
第2页 / 共45页
zookeeper介绍_第3页
第3页 / 共45页
资源描述:

《zookeeper介绍》由会员分享,可在线阅读,更多相关《zookeeper介绍(45页珍藏版)》请在装配图网上搜索。

1、2021/7/11Zookeeper2021/7/12ZooKeeper2021/7/13认识ZooKeeperZooKeeper是一个分布式的小文件存储系统。前身是Apache Hadoop的一个组件,被拆分为一个Hadoop的独立子项目。2021/7/14认识ZooKeeperZooKeeper是一个为分布式应用程序提供高性能协调服务的工具集合。它可以应用在一些需要提供统一协调服务的场景中,例如命名、配置管理、同步和组服务等。而在我们的场景中,它被作为一个协调分布式环境中各子系统之间共享状态数据的基础组件。2021/7/15认识ZooKeeperHbaseYahooMateQDubbo20

2、21/7/16ZooKeeper文件系统czxid:节点创建时的zxidmzxid:节点最新一次更新发生时的zxidctime:节点创建时的时间戳mtime:节点最新一次更新发生时的时间戳version:节点数据的更新次数cversion:其子节点的更新次数aversion:节点ACL(授权信息)的更新次数ephemeralOwner:ephemeral节点所属sessiondataLength:节点数据的字节数numChildren:子节点个数zxidznode节点的状态信息中包含czxid和mzxid,那么什么是zxid呢?ZooKeeper状态的每一次改变,都对应着一个递增的Transa

3、ction id,该id称为zxid.由于zxid的递增性质,如果zxid1小于zxid2,那么zxid1肯定先于zxid2发生.创建任意节点,或者更新任意节点的数据,或者删除任意节点,都会导致Zookeeper状态发生改变,从而导致zxid的值增加.2021/7/17ZooKeeper文件系统节点类型节点类型persistentpersistent节点不和特定的session绑定,不会随着创建该节点的session的结束而消失,而是一直存在,除非该节点被显式删除.ephemeralephemeral节点是临时性的,如果创建该节点的session结束了,该节点就会被自动删除.ephemeral

4、节点不能拥有子节点.虽然ephemeral节点与创建它的session绑定,但只要该该节点没有被删除,其他session就可以读写该节点中关联的数据.使用-e参数指定创建ephemeral节点.sequencesequence并非节点类型中的一种.sequence节点既可以是ephemeral的,也可以是persistent的.创建sequence节点时,ZooKeeper server会在指定的节点名称后加上一个数字序列,该数字序列是递增的.因此可以多次创建相同的sequence节点,而得到不同的节点.使用-s参数指定创建sequence节点.2021/7/18ZooKeeper文件系统简单

5、命令简单命令zk:localhost:2181(CONNECTED)1 ls/job,tmp,hbase,job2,zookeeperzk:localhost:2181(CONNECTED)2 create-e/xief dataCreated/xiefzk:localhost:2181(CONNECTED)5 delete/xief2021/7/19ZooKeeper文件系统简单命令简单命令zk:localhost:2181(CONNECTED)3 get/xiefdatacZxid=0 x50000001cctime=Fri Apr 18 17:04:38 CST 2014mZxid=0

6、x50000001cmtime=Fri Apr 18 17:04:38 CST 2014pZxid=0 x50000001ccversion=0dataVersion=0aclVersion=0ephemeralOwner=0 x245725533760000dataLength=4numChildren=02021/7/110ZooKeeper文件系统简单命令简单命令zk:localhost:2181(CONNECTED)4 set/xief data2cZxid=0 x50000001cctime=Fri Apr 18 17:04:38 CST 2014mZxid=0 x50000001d

7、mtime=Fri Apr 18 17:06:46 CST 2014pZxid=0 x50000001ccversion=0dataVersion=1aclVersion=0ephemeralOwner=0 x245725533760000dataLength=5numChildren=02021/7/111Zookeeper APIStat exists(String path,boolean watch);是否存在节点:watch参数用于指定是否监听path node的创建,删除事件,以及数据更新事件.如果该node存在,则返回该node的状态信息,否则返回null.String crea

8、te(String path,byte data,List acl,CreateMode createMode);创建节点:path:znode的路径,data:与znode关联的数据,acl:指定权限信息,如果不想指定权限,可以传入Ids.OPEN_ACL_UNSAFE.createMode:指定znode类型.CreateMode是一个枚举类void getChildren(String path,Watcher watcher,ChildrenCallback cb,Object ctx)获取子节点:watch参数用于指定是否监听path node的子node的增加和删除事件,以及pat

9、h node本身的删除事件void getData(String path,Watcher watcher,DataCallback cb,Object ctx)获取节点数据:watch参数用于指定是否监听path node的删除事件,以及数据更新事件,注意,不监听path node的创建事件,因为如果path node不存在,该方法将抛出KeeperException.NoNodeException异常.stat参数是个传出参数,getData方法会将path node的状态信息设置到该参数中.void setData(String path,byte data,int version,St

10、atCallback cb,Object ctx)设置节点数据:data为待更新的数据.version参数指定要更新的数据的版本,如果version和真实的版本不同,更新操作将失败.指定version为-1则忽略版本检查.返回path node的状态信息.void delete(final String path,int version,VoidCallback cb,Object ctx)删除节点:version参数的作用同setData方法.2021/7/112Zookeeper APIvoid exists(final String path,Watcher watcher,StatCa

11、llback cb,Object ctx)是否存在节点:watch参数用于指定是否监听path node的创建,删除事件,以及数据更新事件.如果该node存在,则返回该node的状态信息,否则返回null.void create(final String path,byte data,List acl,CreateMode createMode,StringCallback cb,Object ctx)创建节点:path:znode的路径,data:与znode关联的数据,acl:指定权限信息,如果不想指定权限,可以传入Ids.OPEN_ACL_UNSAFE.createMode:指定znod

12、e类型.CreateMode是一个枚举类List getChildren(String path,boolean watch);获取子节点:watch参数用于指定是否监听path node的子node的增加和删除事件,以及path node本身的删除事件 byte getData(String path,boolean watch,Stat stat);获取节点数据:watch参数用于指定是否监听path node的删除事件,以及数据更新事件,注意,不监听path node的创建事件,因为如果path node不存在,该方法将抛出KeeperException.NoNodeException异

13、常.stat参数是个传出参数,getData方法会将path node的状态信息设置到该参数中.Stat setData(final String path,byte data,int version);设置节点数据:data为待更新的数据.version参数指定要更新的数据的版本,如果version和真实的版本不同,更新操作将失败.指定version为-1则忽略版本检查.返回path node的状态信息.void delete(final String path,int version);删除节点:version参数的作用同setData方法.2021/7/113Zookeeper API访

14、问控制APIList getACL(final String path,Stat stat)void getACL(final String path,Stat stat,ACLCallback cb,Object ctx)Stat setACL(final String path,List acl,int version)void setACL(final String path,List acl,int version,StatCallback cb,Object ctx)同步同步APIvoid sync(final String path,VoidCallback cb,Object c

15、tx)2021/7/114Watch机制监听事件 新增 更新 删除 子节点变化2021/7/115Watch机制event For“/path”event For“/path/child”create(“/path”)EventType.NodeCreatedNAdelete(“/path”)EventType.NodeDeletedNAsetData(“/path”)EventType.NodeDataChangedNAcreate(“/path/child”)EventType.NodeChildrenChangedEventType.NodeCreateddelete(“/path/ch

16、ild”)EventType.NodeChildrenChangedEventType.NodeDeletedsetData(“/path/child”)NAEventType.NodeDataChanged2021/7/116Watch机制“/path”“/path/child”existsgetData getChildren existsgetData getChildrencreate(“/path”)delete(“/path”)setData(“/path”)create(“/path/child”)delete(“/path/child”)setData(“/path/child

17、”)2021/7/117ZooKeeper部署-单机模式zoo.cfg配置配置项示例说明clientPortclientPort=2181服务的监听端口dataDirdataDir=/home/hadoop/zookeeper用于存放内存数据库快照的文件夹tickTimetickTime=2000心跳时间dataLogDirdataLogDir=/home/hadoop/zookeeper单独设置transaction log的目录2021/7/118ZooKeeper部署配置项示例说明globalOutstandingLimitglobalOutstandingLimit=1000clien

18、t请求队列的最大长度preAllocSizepreAllocSize=65536预分配的Transaction log空间为block个proAllocSize KB,默认block为64MsnapCountsnapCount=100000在snapCount个snapshot后写一次transaction log,默认值是100,000traceFiletraceFile=1用于记录请求的log,打开会影响性能maxClientCnxnsmaxClientCnxns=60 一个client与server上最大的socket链接数clientPortAddressclientPortAddre

19、ss=192.168.1.1设置指定的client ip以及端口minSessionTimeoutminSessionTimeout=5000最小的客户端session超时时间,默认值为2个tickTime,单位是毫秒maxSessionTimeoutminSessionTimeout=5000最大的客户端session超时时间,默认值为20个tickTime,单位是毫秒autopurge.snapRetainCountautopurge.snapRetainCount=3用于清理“过期”的snapshot文件和其相应的txn log fileautopurge.purgeIntervalau

20、topurge.purgeInterval=1清理任务被处罚的时间间隔,单位:hoursjute.maxbufferjute.maxbuffer=1024每个节点最大数据量,是默认是1M。forceSyncforceSync=true这个参数确定了是否需要在事务日志提交的时候调用FileChannel.force来保证数据完全同步到磁盘2021/7/119ZooKeeper部署hadoopcentos-1 zookeeper-3.4.5-cdh4.3.0$bin/./zkServer.sh startJMX enabled by defaultUsing config:/export/home

21、/tools/zookeeper-3.4.5-cdh4.3.0/bin/./conf/zoo.cfgStarting zookeeper.STARTEDhadoopcentos-2 zookeeper-3.4.5-cdh4.3.0$bin/./zkServer.sh statusJMX enabled by defaultUsing config:/export/home/tools/zookeeper-3.4.5-cdh4.3.0/bin/./conf/zoo.cfgMode:standalone2021/7/120ZooKeeper部署Zookeeper集群模式2021/7/121ZooK

22、eeper部署-集群模式配置项示例说明syncLimitsyncLimit=2多少个tickTime内,允许follower同步initLimitinitLimit=5多少个心跳时间内,允许其他server连接并初始化数据electionAlgelectionAlg=3default 3.使用何种选举方式,(0,1,2,3),“0”表示使用原生的UDP(LeaderElection),“1”表示使用非授权UDP,“2”表示授权UDP,“3”基于TCP的快速选举(FastLeaderElection)peerType peerType=observerobserver,participantle

23、aderServesleaderServes=yesleader是否接受client请求cnxTimeoutcnxTimeout=5000leader选举时,socket链接打开的时长。只有在elctionArg为3时生效。server.sid=hostname:followingPort:electionPortserver.1=127.0.0.1:2888:3888server.2=127.0.0.1:2889:3889 server.3=127.0.0.1:2890:3890 server.4=127.0.0.1:2891:3891:observerZK 节点列表,格式:server.s

24、id=hostname:followingPort:electionPort,如果采用UDP方式,electionPort可以不用设置。Leader选举成功之后,Follower可以在followingPort上与leader建立链接,以便此后进行各种通讯.比如server.1为Leader,那么其他机器将会在127.0.0.1:2888上建立链接./electionPort为Leader选举的端口,当集群处于危险期时,每个server都会根据server列表中配置,和其他server的electionPoint建立链接,并在此后通过此连接发送选举信息.group.x=nnnnn:nnnnnw

25、eight.x=nnnnngroup.1=1:2 group.2=4:5 weight.1=1 weight.2=1 weight.3=1 weight.4=0.8对机器分组和权重设置2021/7/122ZooKeeper部署hadoopcentos-1 zookeeper-3.4.5-cdh4.3.0$bin/./zkServer.sh startJMX enabled by defaultUsing config:/export/home/tools/zookeeper-3.4.5-cdh4.3.0/bin/./conf/zoo.cfgStarting zookeeper.STARTEDh

26、adoopcentos-2 zookeeper-3.4.5-cdh4.3.0$bin/./zkServer.sh statusJMX enabled by defaultUsing config:/export/home/tools/zookeeper-3.4.5-cdh4.3.0/bin/./conf/zoo.cfgMode:leaderhadoopcentos-2 zookeeper-3.4.5-cdh4.3.0$bin/./zkServer.sh statusJMX enabled by defaultUsing config:/export/home/tools/zookeeper-3

27、.4.5-cdh4.3.0/bin/./conf/zoo.cfgMode:follower2021/7/123ZooKeeper部署-集群模式三种角色LeaderFollowerObserver2021/7/124ZooKeeper部署-集群模式Leader1.恢复数据2.维持与Learner的心跳3.接收Learner写请求4.接收Client的读写请求2021/7/125ZooKeeper部署-集群模式Follower1.向Leader发送请求2.接收Leader消息并进行处理3.接收Client的请求,如果为写请求,发送给Leader进行投票2021/7/126ZooKeeper特性 简

28、单ZooKeeper核心是一个精简的文件系统,它提供了一些简单的文件操作以及附加的功能,例如排序和通知。易表达ZooKeeper的数据结构原型是一棵znode树(类似Linux的文件系统),并且它们是一些已经被构建好的块,可以用来构建大型的协作数据结构和协议。高可用性ZooKeeper可以运行在一组服务器上,同时它们被设计成高可用性,为你的应用程序避免单点故障。松耦合交互ZooKeeper提供的Watcher机制使得各客户端与服务器的交互变得松耦合,每个客户端无需知晓其他客户端的存在,就可以和其他客户端进行数据交互。丰富的APIZooKeeper为开发人员提供了一套丰富的API,减轻了开发人员

29、编写通用协议的负担。2021/7/127Zookeeper使用场景命名服务2021/7/128Zookeeper使用场景配置管理发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,服务式服务框架的服务地址列表等就非常适合使用2021/7/129Zookeeper使用场景负载均衡2021/7/130Zookeeper使用场景分布式独占锁2021/7/131Zookeeper使用场景分布式读写锁2021/7/132Zookeeper使用场景分布式队列-FIFO2021/7/133Zookeeper

30、使用场景分布式队列-SyncQueue2021/7/134Zookeeper使用场景集群管理2021/7/135ZooKeeper集群-R/W2021/7/136ZooKeeper-R/W2021/7/137ZooKeeper-备份容错一个节点出错,不致于让整个系统停止工作,别的节点可以接管它的工作提高系统的扩展能力把负载分布到多个节点上,或者增加节点来提高系统的负载能力提高性能让客户端本地访问就近的节点,能提高用户访问速度2021/7/138ZooKeeper-备份Snapshot+Log保存某一时刻的快照以及这个时刻之后的所有写操作记录。在进行可持久化备份时,并不会对内存数据加锁,而是采用

31、深度优先遍历的方式遍历整个data。这种备份方式产生的备份数据可能与集群中其他任何server当前的状态都不一致,但由于在开始备份的同时也会开始记录log,而log中的每个操作都具有幂等性质,只要将这些操作按顺序应用于最终的快照,就会得到一个正确版本的数据。2021/7/139ZooKeeper集群-启动2021/7/140ZooKeeper集群-同步2021/7/141ZooKeeper集群-选举FastLeaderElection:TCPAuthFastLeaderElection:UDPLeaderElection:UDPlookingleadingfollowing2021/7/142

32、ZooKeeper集群-Paxos基于消息传递通信模型的分布式系统,不可避免的会发生以下错误:进程可能会慢、垮、重启,消息可能会延迟、丢失、重复。Paxos 算法解决的问题是在一个可能发生上述异常的分布式系统中如何就某个值达成一致,保证不论发生以上任何异常,都不会破坏决议的一致性。2021/7/143ZooKeeper集群-FastPaxos2021/7/144参考http:/zookeeper.apache.org/doc/trunk/index.htmlhttp:/zh.wikipedia.org/zh-cn/Paxos%E7%AE%97%E6%B3%95 http:/ 若有不当之处,请指正,谢谢!若有不当之处,请指正,谢谢!

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!