名词概念
Zookeeper集群中有三种角色:Leader、Follower、Observer。Leader提供读和写服务。Follower和Observer能提供读服务。Observer和Follower的区别就在于Ovserver不参与Leader选举,不参与写操作的过半成功策略。
客户端会话,一个客户端连接是指客户端和服务端之间的一个TCP长连接。客户端启动的时候,首先会和服务器建立一个TCP长连接,从第一次建立连接开始,会话(session)的生命周期就开始了。通过这个连接,客户端能够通过心跳检测与服务器保持有效的会话,也能够向Zookeeper服务器发送请求,同时还能接受服务器的Watch事件通知。
Zookeeper数据模型中的一个单元,我们称之为数据节点。Zookeeper将所有数据存储在内存中,数据模型是一棵树,由斜杠进行分割的路径,就是一个Znode。如/app。每个Znode都能保存自己的数据内容,还会保存属性信息。
4. 版本
每个Znode都有一个叫作Stat的数据结构,Stat里记录了Znode的三个数据版本,分别是version(当前Znode的版本)、cversion(当前Znode子节点的版本)、aversion(当前Znode的ACL版本)
5. Watcher(事件监听器)
Watcher是Zookeeper中一个很重要的特性,Zookeeper允许用户在指定节点上注册一些Watcher,并且在一些特定事件触发的时候,Zookeeper服务端会将事件通知到感兴趣的客户端,该机制是Zookeeper实现分布式协调服务的重要特性。
6. ACL
Zookeeper采用ACL策略来进行权限控制,它定义了五种权限:
注意:CREATE和DELETE这两种权限是针对子节点的权限控制
连接成功之后,系统会输出Zookeeper的相关环境及配置信息等信息
很少直接使用了,接口介绍省略
ZkClient是github上一个开源的zookeeper客户端,在原生API的基础上进行了包装,更加易用。同时还实现了如Session超时重连、Watcher反复注册等功能。
直接上代码:
Curator是Netflix公司开源的客户端框架。它实现了连接重连、Watcher反复注册、重试策略和NodeExistsException异常解决等等。
直接上代码:
您好,很高兴为您解答。1:MapReduce(MR),最为general和流行的一个分布式计算框架,其开源实现Hadoop已经得到了极为广泛的运用(Facebook,Yahoo!等等),同时在Hadoop基础上发展起来的项目也有很多(Hive是发展最好的),另外像Cloudera,Hortonworks,MapR这样的在Hadoop基础上发展起来的公司也有很多。2:Pregel,和MR一样也是Google发明的,其优势是在完成一些适合于抽象为图算法的应用的计算时可以更为高效,Giraph可以算是一个比较好的发展中的开源实现。3:Storm,Twitter的项目,号称Hadoop的实时计算平台,对于一些需要realtimeperformance的job可以拥有比MR更高的效率。4:Spark,UCBerkeleyAMPLab的项目,其很好地利用了JVM中的heap,对于中间计算结果可以有更好的缓存支持,因此其在performance上要比MR高出很多。Shark是其基础上类似于Hive的一个项目。5:Dryad和Scope,都是MR(MicrosoftResearch)的项目,从paper上来看Dryad是一个更为generalpurpose的计算框架,在vertices里实现计算,通过channels实现communication,两者组成一个graphworkflow;而Scope有点类似于Hive和Shark,都是将某种类似于SQL的scriptlanguage编译成可以在底层分布式平台上计算的job。但是这两个项目因为不开源,所以资料不多,也没有开源项目那样的community。当然还有其他很多,比如Google的Dremel,Yale的HadoopDB(现在已经商业化叫做Hadapt)。如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】希望我的回答对您有所帮助,望采纳!~O(∩_∩)O~
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)