怎样在本地windows安装和配置zookeeper
Zookeeper是什么?有什么用?
Zookeeper是一个分布式协调服务。
作用:为用户的分布式应用程序提供协调服务。
zookeeper在底层其实只提供了两个功能:
1、管理(存储,读取)用户程序提交的数据
2、并为用户程序提供数据节点监听服务
ZooKeeper提供了什么?
1、文件系统:每个子目录项如 NameService 都被称作为znode,和文件系统一样,我们能够自由的增加、删除znode,在一个znode下增加、删除子znode,唯一的不同在于znode是可以存储数据的。
有四种类型的znode:
1、PERSISTENT-持久化目录节点 客户端与zookeeper断开连接后,该节点依旧存在
2、PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点 客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号
3、EPHEMERAL-临时目录节点 客户端与zookeeper断开连接后,该节点被删除
4、EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点 客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号
2、通知机制:客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端。
Zookeeper做了什么?
1、命名服务:在zookeeper的文件系统里创建一个目录,即有唯一的path。在我们使用tborg无法确定上游程序的部署机器时即可与下游程序约定好path,通过path即能互相探索发现。
2、配置管理:程序配置放在zookeeper上的某个节点znode中,并进行监听,一旦发生改变,则受到zookeeper的通知。
3、集群管理:
1、是否有机器退出和加入: 所有机器约定在父目录GroupMembers下创建临时目录节点,然后监听父目录节点的子节点变化消息。一旦有机器挂掉,该机器与 zookeeper的连接断开,其所创建的临时目录节点被删除
2、选举master: 所有机器创建临时顺序编号目录节点,每次选取编号最小的机器作为master就好。
4、分布式锁:
1、保持独占: 我们将zookeeper上的一个znode看作是一把锁,通过createznode的方式来实现。所有客户端都去创建 /distribute_lock 节点,最终成功创建的那个客户端也即拥有了这把锁。用完删除掉自己创建的distribute_lock 节点就释放出锁。
2、控制时序: /distribute_lock 已经预先存在,所有客户端在它下面创建临时顺序编号目录节点,和选master一样,编号最小的获得锁,用完删除,依次方便。
5、队列管理:
两种类型的队列:
1、同步队列:当一个队列的成员都聚齐时,这个队列才可用,否则一直等待所有成员到达。 在约定目录下创建临时目录节点,监听节点数目是否是我们要求的数目。
2、队列按照:FIFO 方式进行入队和出队操作。 和分布式锁服务中的控制时序场景基本原理一致,入列有编号,出列按编号。
单机版:
1.下载Zookeeper安装包
建议去官方网站上下载稳定版本,地址:http://zookeeper.apache.org/releases.html
2.配置文件zoo.cfg
先解压zk,如:
然后需要将%ZK_HOME%/conf目录下的zoo_sample.cfg文件重命名为zoo.cfg,并且按照下面的方式简单配置:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:/zookeeper/zookeeper-1/tmp/zookeeper/ (如果不存在文件夹则手动新建)
clientPort=2181
server.1=127.0.0.1:2888:3888
======================================================================================================================
关于zoo.cfg的配置,这里简单说明下:
a.在集群模式下,集群中每台机器都需要感知到整个集群是由哪几台机器组成的,在配置文件中,可以按照这样的格式进行配置,每一行都代表一个机器配置:server.id=host:port:port,
其中,id被称为 Server ID,用来标识该机器在集群中的机器序列号。同时,在每台Zookeeper机器上,我们都需要在数据目录(即dataDir参数指定的那个目录)下创建一个myid文件,该文件只有一行内容,并且是一个数字,即对应于每台机器的Server ID 数字。
b.在Zk的设计中,集群中所有机器上的zoo.cfg文件的内容都应该是一致的。因此最好使用svn或是git把此文件管理起来,确保每个机器都能共享到一份相同的配置。
c.上面也提到了,myid文件中只有一个数字,即一个Server ID。例如,server.1的myid文件内容就是"1"。注意,清确保每个服务器的myid文件中的数字不同,并且和自己所在机器的zoo.cfg中server.id=houst:port:port的id一致。另外,id的范围是1~255。
d.参数的意义:
tickTime:默认值为3000,单位是毫秒(ms),可以不配置。参数tickTime用于配置Zookeeper中最小时间单元的长度,很多运行时的时间间隔都是使用tickTime的倍数来表示的。例如,Zk中会话的最小超时时间默认是2*tickTime。
dataDir:该参数无默认值,必须配置。参数dataDir用于配置Zookeeper服务器存储快照文件的目录。
clientPort:参数clientPort用于配置当前服务器对外的服务端口,客户端会通过该端口和Zk服务器创建连接,一般设置为2181。
initLimit:该参数默认值:10,表示是参数tickTime值的10倍,必须配置,且为正整数。该参数用于配置Leader服务器等待Follower启动,并完成数据同步的时间。Follower服务器在启动过程中,会与Leader建立连接并完成对数据的同步,从而确定自己对外提高服务的起始状态。leader服务器允许Follower在initLimit时间内完成这个工作。
syncLimit:该参数默认值:5,表示是参数tickTime值的5倍,必须配置,且为正整数。该参数用于配置Leader服务器和Follower之间进行心跳检测的最大延时时间。在Zk集群运行的过程中,Leader服务器会与所有的Follower进行心跳检测来确定该服务器是否存活。如果Leader服务器在syncLimit时间内无法获取到Follower的心跳检测响应,那么Leader就会认为该Follower已经脱离了和自己的同步。
server.id:该参数无默认值,在单机模式下可以不配置。该参数用于配置组成Zk集群的机器列表,其中id即为Server ID,与每台服务器myid文件中的数字相对应。同时,在该参数中,会配置两个端口:第一个端口用于指定Follower服务器与Leader进行运行时通信和数据同步时所使用的端口,第二个端口测专门用于进行Leader选举过程中的投票通信。
=======================================================================================================================================
3.创建myid文件
在dataDir所配置的目录下,创建一个名为myid的文件,在该文件的第一行写上一个数字,和zoo.cfg中当前机器的编号对应上。即:
在D:\zookeeper\zookeeper-1\tmp\zookeeper\文件夹下创建值为"1"的myid文件。
4.启动服务器
至此,所有Zk都已经基本配置完毕,可以使用 %ZK_HOME%/bin 目录下的zkServer.cmd脚本进行服务器的启动了,如:
出现如上图,说明你的zk的服务端已经启动成功
5.验证服务器
可以通过Zk提供的简易客户端来进行验证,可以打开一个新的cmd,通过命令zkCli.cmd -server 127.0.0.1:2181来启动,然后通过使用ls命名(列出Zk指定节点下的所有子节点)来验证Zk已经启动完成,如图:
出现如上图说明你的zk已经安装和配置成功了!!!!!!!!
怎样在本地windows安装和配置zookeeper的更多相关文章
- Windows安装和使用zookeeper
之前整理过一篇文章<zookeeper 分布式锁服务>,本文介绍的 Zookeeper 是以 3.4.5 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apach ...
- (转)Windows安装和使用zookeeper
(转)原地址https://www.cnblogs.com/shanyou/p/3221990.html 之前整理过一篇文章<zookeeper 分布式锁服务>,本文介绍的 Zookeep ...
- zk 02之 Windows安装和使用zookeeper
本文介绍的 Zookeeper 是以 3.4.5 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非 ...
- Windows 安装和配置 WSL
Windows 安装和配置 WSL 什么是 WSL 引用百度百科的一段话: Windows Subsystem for Linux(简称WSL)是一个为在Windows 10上能够原生运行Linux二 ...
- Meld Diff for windows 安装和配置
Meld Diff for windows 安装和配置 假设你在ubuntu 正在开发中, meld diff 此工具你肯定不会感到陌生. 而且很容易使用. 在网上看 meld for Windows ...
- windows安装并配置 nginx
1,windows安装并配置 nginx 到nginx官网上下载相应的安装包,http://nginx.org/en/download.html: 下载并压缩放到自己目录下面,不要有中文目录 进入cm ...
- JMS之——ActiveMQ 高可用与负载均衡集群安装、配置(ZooKeeper + LevelDB + Static discovery)
一.说明 从 ActiveMQ 5.9 开始, ActiveMQ 的集群实现方式取消了传统的 Master-Slave 方式,增加了基于ZooKeeper + LevelDB 的 Master-Sla ...
- 本地电脑安装和配置Redis操作客户端
下载需要的文件:http://pan.baidu.com/s/1gdfQePl 把这个下载下来解压就可以了,如图所示 第一步(配置本地服务) 点击run这个DOS执行命令 因为是自己的电脑测试 ...
- windows安装和配置JDK
安装完JDK后配置环境变量 计算机→属性→高级系统设置→高级→环境变量 系统变量→新建 JAVA_HOME 变量 . 变量值填写jdk的安装目录(本人是 E:\Java\jdk1.7.0) ...
随机推荐
- USB设备驱动_WDS
1. usb_alloc_dev中的 bus_type 中指定了匹配函数,和uevent中的环境参数. ====>不同的bus_type的匹配函数可能是不同的,uevent的环境变量参数也可能是 ...
- lets encrypt 申请nginx 泛域名
1. 安装certbot工具 wget https://dl.eff.org/certbot-auto chmod a+x ./certbot-auto 2. 申请通配符域名 ./certbot-au ...
- linux日志分析
转一位大神的笔记. 日志管理: 1.基于服务的 2.基于时间的 /var/log/wtmp,/var/run/utmp,/var/log/lastlog(lastlog),/var/log/btmp( ...
- 声明变量(Declared Variable)和非声明变量(Undeclared Variable)的区别
声明变量的作用域限制在其声明位置的上下文中,而非声明变量总是全局的. 声明变量在任何代码执行前创建,而非声明变量只有在执行赋值操作的时候才会被创建. 声明变量是它所在上下文环境的不可配置属性(non- ...
- iis运行asp.net页面提示“服务器应用程序不可用”的解决办法_.NET.
原因:主要是iis安装在了net framwork之后 解决办法:需要在IIS中重新注册.net 也就是要用到系统盘: cd c:\windows\microsoft.net\framework\v2 ...
- shell 前台进程组的选择
控制命令如ctrl+c,ctrl+d等命令是会kill到前台进程组的,这个过程和bash进程还有tty驱动有关系. 在终端执行命令,在bash进程看来都是在执行job,然后fork出子进程来执行这些j ...
- php函数的实现
1.函数 汇编中函数对应的是一组独立的汇编指令,然后通过call指令实现函数的调用.PHP编译的opcode数组,与汇编指令对应. PHP用户自定义函数的实现就是将函数编译为独立的opcode ...
- java Collections工具类
Collections 是专门对集合进行操作的类 比如排序sort 也可以使用自定义的比较器 sort文档中的定义 必须具有比较性,具有比较性必须是comparable 的子类 '<T ext ...
- 无需公众号PHP微信登录微信授权微信第三方登录微信开发php开发
无论是个人还是公司,无需申请公众号,无需申请微信开放平台,即可实现手机网站和PC网站的微 信登录!!! 正常的微信登录是这样的: 1.手机版网站做微信登录,需要申请一个认证公众号,认证不仅需要公司营 ...
- lwip调试记录
1. lwip在调用tcp_write后不会立即发送数据,而会等到tcp_slow_tmr中再发送.如需立即发送,可以在tcp_write后调用tcp_output.lwip的这种处理方式对连续调用t ...