windows中安装zookeeper

 Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。本文将从使用者角度详细介绍 Zookeeper 的安装和配置文件中各个配置项的意义,以及分析 Zookeeper 的典型的应用场景(配置文件的管理、集群管理、同步锁、Leader 选举、队列管理等),用 Java 实现它们并给出示例代码。

ZooKeeper 是一个为分布式应用所设计的分布的、开源的协调服务。分布式的应用可以建立在同步、配置管理、分组和命名等服务的更高级别的实现的基础之上。 ZooKeeper 意欲设计一个易于编程的环境,它的文件系统使用我们所熟悉的目录树结构。 ZooKeeper 使用Java 所编写,但是支持 Java  C 两种编程语言。

众所周知,协调服务非常容易出错,但是却很难恢复正常,例如,协调服务很容易处于竞态以至于出现死锁。我们设计 ZooKeeper 的目的是为了减轻分布式应用程序所承担的协调任务。

ZooKeeper是一个高可用、高可靠的协同工作系统,分布式程序可以用ZooKeeper保存并更新关键共享状态。

zookeeper是针对分布式应用的分布式协作服务,它的目的就是为了减轻分布式应用从头开发协作服务的负担。

Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护 和命名服务等。Zookeeperhadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协 调机制不适合在某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。Zookeeper的目的就在于此。

zookeeper的下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/

下载好后的zookeeper解压到一个地方目录大概是这样的




 F:\zookeeper-3.3.6 的目录


2014/09/16  17:04    <DIR>          .
2014/09/16  17:04    <DIR>          ..
2014/09/16  16:10    <DIR>          bin
2012/07/29  14:23            59,687 build.xml
2012/07/29  14:23            52,566 CHANGES.txt
2014/09/16  17:06    <DIR>          conf
2014/09/16  16:10    <DIR>          contrib
2014/09/16  17:09    <DIR>          data
2014/09/16  16:10    <DIR>          dist-maven
2014/09/16  16:10    <DIR>          docs
2012/07/29  14:23             2,415 ivy.xml
2012/07/29  14:23             1,932 ivysettings.xml
2014/09/16  16:10    <DIR>          lib
2012/07/29  14:23            11,358 LICENSE.txt
2014/09/16  17:04    <DIR>          log
2012/07/29  14:23               165 NOTICE.txt
2012/07/29  14:23             1,578 README.txt
2014/09/16  16:10    <DIR>          recipes
2014/09/16  16:10    <DIR>          src
2012/07/29  14:23         1,031,338 zookeeper-3.3.6.jar
2012/07/29  14:25               198 zookeeper-3.3.6.jar.asc
2012/07/29  14:23                33 zookeeper-3.3.6.jar.md5
2012/07/29  14:23                41 zookeeper-3.3.6.jar.sha1
              11 个文件      1,161,311 字节
              12 个目录 94,507,941,888 可用字节


进到conf目录下复制一个名字为zoo_sample.cfg的文件并修改名字为zoo.cfg

添加如下内容

# The number of milliseconds of each tick 维持心跳的时间间隔
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot isstored.  镜像数据位置
dataDir=F:\\zookeeper-3.3.6\\data
#日志位置
dataLogDir=F:\\zookeeper-3.3.6\\log
# the port at which the clients will connect 客户端连接的端口
clientPort=2181


这里简单的说明一下,这些配置只是做一个简单的测试并未做分布式处理

dataDir就是zookeeper的镜像数据位置,这个文件需要用户自行设置博主暂时将其放在zookeeper的子目录下的data文件中

dataLogDir就是zookeeper的日志记录位置,这个文件同样需要用户自行设置博主暂时将其放在zookeeper的子目录下log文件中


做完上面的这些后就可以启动zookeeper了启动的方式就是执行zookeeper/bin目录下的zkServer.cmd文件即可

启动完成后就可以重启一个命令窗口连接zookeeper了

连接zookeeper的命令同样是bin目录下的zkCli.sh –server 127.0.0.1:2182

连接成功后就可以输入相关的命令了

刚开始由于我们不知道输入什么命令zookeeper会给出一个help

 connect host:port
 get path [watch]
 ls path [watch]
 set path data [version]
 delquota [-n|-b] path
 quit
 printwatches on|off
 create [-s] [-e] path data
 stat path [watch]
 close
 ls2 path [watch]
 history
 listquota path
 setAcl path acl
 getAcl path
 sync path
 redo cmdno
 addauth scheme auth
 delete path [version]
 setquota -n|-b val path


ls(查看当前节点数据),
ls2(查看当前节点数据并能看到更新次数等数据) ,
create(创建一个节点) ,
get(得到一个节点,包含数据和更新次数等数据),
set(修改节点)
delete(删除一个节点)

通过上述命令实践,我们可以发现,zookeeper使用了一个类似文件系统的树结构,数据可以挂在某个节点上,可以对这个节点进行删改。另外我们还发现,当改动一个节点的时候,集群中活着的机器都会更新到一致的数据。 


zookeeper的数据模型
在简单使用了zookeeper之后,我们发现其数据模型有些像操作系统的文件结构,结构如下图所示



(1)     每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识,如/SERVER2节点的标识就为/APP3/SERVER2
(2)     Znode可以有子znode,并且znode里可以存数据,但是EPHEMERAL类型的节点不能有子节点
(3)     Znode中的数据可以有多个版本,比如某一个路径下存有多个数据版本,那么查询这个路径下的数据就需要带上版本。
(4)     znode 可以是临时节点,一旦创建这个 znode 的客户端与服务器失去联系,这个 znode 也将自动删除,Zookeeper 的客户端和服务器通信采用长连接方式,每个客户端和  服务器通过心跳来保持连接,这个连接状态称为 session,如果 znode 是临时节点,这个 session 失效,znode 也就删除了
(5)     znode 的目录名可以自动编号,如 App1 已经存在,再创建的话,将会自动命名为 App2 
(6)     znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的集中管理,集群管理,分布式锁等等。
  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273381.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL Event

一、前言自MySQL5.1.6起&#xff0c;增加了一个非常有特色的功能–事件调度器(Event Scheduler)&#xff0c;可以用做定时执行某些特定任务&#xff08;例如&#xff1a;删除记录、对数据进行汇总等等&#xff09;&#xff0c;来取代原先只能由操作系统的计划任务来执行的工作。…

Java中实现统计一个字符串在另一个字符串中出现的次数统计

public int getSubNum(String a,String b){int num0;String stra;int indexa.indexOf(b);while(index!-1){num;strstr.substring(indexb.length()-1);indexstr.indexOf(b);}return num;}

【编程练习】正整数分解为几个连续自然数之和

题目&#xff1a;输入一个正整数&#xff0c;若该数能用几个连续正整数之和表示&#xff0c;则输出所有可能的正整数序列。 一个正整数有可能可以被表示为n(n>2)个连续正整数之和&#xff0c;如&#xff1a; 1512345 15456 1578 有些数可以写成连续N&#xff08;>1&am…

IOS-C语言第12天,(函数指针)Point and macro(宏)

转载于:https://www.cnblogs.com/xiangrongsu/p/4309366.html

c# 两个数的加减乘除

Console.Title "加减乘除"; double x, y,z0; string m; int n0; Console.WriteLine("第一个数&#xff1a;"); x Convert.ToDouble(Console.ReadLine()); Console.WriteLine("运算符(默认为加)&#xff1a;"); m Console.ReadLine(); m (m &…

mysql建表语句

在sql语句中注意“约束的概念": 1.实体完整性约束(主键--唯一且非空) primary key()违约处理:No action(拒绝执行)2.参照完整性约束(外键约束)foregin key() references tableName(filedName) [on delete|update casecade | no action]违约处理:级联更新或拒绝执行3.用户自…

HTTP协议(1)—HTTP的连接

一、TCP连接过程:a.浏览器解析出主机名b.浏览器查询出这个主机名的IP地址c.浏览器获得端口号d.浏览器发起到ip:port的连接(TCP连接)e.浏览器向服务器发送一条HTTP报文f.浏览器从服务器读取HTTP响应报文g.浏览器关闭连接1.TCP的可靠数据管道从TCP连接一端填入的字节会从另一端以…

Apache POI使用详解

1.POI结构与常用类(1)POI介绍Apache POI是Apache软件基金会的开源项目&#xff0c;POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 Microsoft Office文档的功能。(2)POI结构说明包名称 说明HSSF 提供读写M…

Http协议(3)—HTTP实体和编码

HTTP实体实现目标.可以被正确识别(通过Content-Type和Content-Launage).可以被正确解包(通过Content-Lenght首部和Content-Encoding首部).是最新的(通过实体验证码和缓存过期控制).符合用户需要(基于Accept系列的内容协商首部).在网络上可以快速有效的传输(通过范围请求、差异编…

架构之美—软件架构6大步骤(开篇)

1> 需求分析2> 领域建模3> 确定关键需求4> 概念架构设计5> 细化架构设计6 架构验证 转载于:https://www.cnblogs.com/kool/p/6695766.html

Http协议(2)—客户端的识别与cookie机制

一、Http用户识别的机制1.承载用户身份的http首部2.客户端IP地址跟踪,根据客户端IP地址进行识别3.用户登录,用认证方式识别用户4.胖URL&#xff0c;一种在URL中嵌入识别信息的技术5.cookie,一种持久身份识别技术二、HTTP首部1.From包含用户的Email地址2.User_Agent将用户所用浏…

经典PCB软件比较阐述—Cadence和Mentor(整理)

PCB(Printed Circuit Board&#xff09;设计软件经过多年的发展、不断地修改和完善&#xff0c;或优存劣汰、或收购兼并、或强强联合&#xff0c;现在只剩下Cadence和Mentor两家公司独大。 Cadence公司的推出的SPB(Silicon Package Board)系列&#xff0c;原理图工具采…

RHEL 集群(RHCS)配置小记 -- 文档记录

1、RHEL 6 集群配置官方管理手册 https://access.redhat.com/site/documentation/zh-CN/Red_Hat_Enterprise_Linux/6/pdf/Cluster_Administration/Red_Hat_Enterprise_Linux-6-Cluster_Administration-zh-CN.pdf 2、官方讲解Fencing设备原理 https://access.redhat.com/documen…

Http协议(5)—HTTP摘要认证

一、摘要认证的改进1.用摘要保护密码客户端不发送密码,而是发送一个摘要&#xff0c;服务端只需验证这个摘要是否和密码相匹配2.单向摘要a.摘要是一种单向函数,将无限的输入值转化为有限的b.常见的摘要为MD5&#xff1a;将任意长度的字节序列转换为一个128位的摘要;MD5的128位摘…

c#常用正则表达式

public class RegexUtil {private RegexUtil() { }private static RegexUtil instance null;/// <summary>/// 静态实例化单体模式/// 保证应用程序操作某一全局对象&#xff0c;让其保持一致而产生的对象/// </summary>/// <returns></returns>publi…

Http协议(4)—HTTP认证机制

一、认证1.HTTP质询/响应认证框架服务器收到一条请求并没有按照请求执行动作,而是以一个认证质询执行响应,要求用户提供一个保密信息说明他是谁,当用户再次发送请求时要附上保密证书,如果证书匹配则执行请求,否则返回一条错误信息2.认证协议与首部官方的两个认证协议:基本认证、…

C#加密解密DES字符串转

using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptography; using System.IO;namespace Component {public class Security{public Security(){ }//默认密钥向量private static byte[] Keys { 0x12, 0x34, 0x56, 0x78, 0x90, …

Http协议(6)—安全HTTP

一、保护HTTP的安全1.功能:.服务器认证:客户端知道它是在与真正的服务器进行通信.客户端认证:服务器知道它是在与真正的客户端进行通信.完整性:服务器与客户端的数据不会被修改.加密:客户端与服务器的对话是私密的,不会被窃听.效率:运行足够快的算法.普适性:所有客户端和服务器…

restful处理

重写/覆盖 HTTP 方法 一些HTTP客户端仅能处理简单的的GET和POST请求&#xff0c;为照顾这些功能有限的客户端&#xff0c;API需要一种方式来重写HTTP方法. 尽管没有一些硬性标准来做这事&#xff0c;但流行的惯例是接受一种叫 X-HTTP的请求头&#xff0c;重写是用一个字符串值…

Http协议(7)—Http缓存

一、冗余的数据传输有些客户端访问服务器页面时,服务器会多次响应同一个页面的副本给客户端&#xff0c;这会产生冗余数据&#xff0c;故使用缓存就可以保留第一条相应的副本&#xff0c;以后就响应缓存的数据二、带宽瓶颈在需要下载大型文件时,如果在局域网中放入该文件的一个…