相关的知识可以参看zookeeper的官网地址:http://zookeeper.apache.org/

一、单机部署(Standalone Operation)

下载zookeeper的稳定版本,或者自己想要的版本,在zookeeper的官网页面可以找到下载地址。

这个教程下载的是zookeeper-3.4.5.tar.gz版本的文件。

然后把文件移动到合适的位置,使用下面的命令进行解压:

$ tar -zxvf zookeeper-3.4.5.tar.gz

如果遇到权限问题,就在命令最前面加上sudo就好了。

在独立模式下可以进行一些配置,并启动zookeeper。

首先在zookeeper的解压目录下创建一个配置文件 conf/zoo.cfg,其内容为:

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181

这个文件可以命名为任何名字,但是为了讨论就命名为conf/zoo.cfg了。其中dataDir可以被指定为一个已经存在的空文件夹路径。

各个配置字段的含义如下:

  • tickTime

    the basic time unit in milliseconds used by ZooKeeper. It is used to do heartbeats and the minimum session timeout will be twice the tickTime.

  • dataDir

    the location to store the in-memory database snapshots and, unless specified otherwise, the transaction log of updates to the database.

  • clientPort

    the port to listen for client connections

创建好配置文件后,现在可以启动Zookeeper了:

bin/zkServer.sh start

Zookeeper的日志使用的是log4j。现在配置的是单机模式,后面的步骤还会配置分布式模式。

二、简单操作与测试

首先连接到Zookeeper:

$ bin/zkCli.sh -server 127.0.0.1:2181

这可以让你执行一些简单的文件操作。

一旦你连接上了,可以看到类似于下面的这些信息:

Connecting to localhost:2181
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).
log4j:WARN Please initialize the log4j system properly.
Welcome to ZooKeeper!
JLine support is enabled
[zkshell: 0]

上面其实就是zookeeper提供的shell的信息于欢迎界面。

在zookeeper的shell中,键入help可以查看有哪些可以在客户端执行的命令,命令列表如下:

[zkshell: 0] help
ZooKeeper host:port cmd argsget path [watch]ls path [watch]set path data [version]delquota [-n|-b] pathquitprintwatches on|offcreatepath data aclstat path [watch]listquota pathhistorysetAcl path aclgetAcl pathsync pathredo cmdnoaddauth scheme authdelete path [version]setquota -n|-b val path

从这个shell中,你可以尝试一些简单的命令来感觉一下这个简单命令行界面。

首先,使用一下列表命令——“ls”,就像下面这样:

[zkshell: 8] ls /
[zookeeper]

接下来,通过运行’create /zk_test my_data’创建一个新的节点(a new znode)。这将会创建一个新的节点,并且节点联系到字符串“my_data”,将会看到:

[zkshell: 9] create /zk_test my_data
Created /zk_test

运行另外一个 ls /命令来看一下文件夹内容:

[zkshell: 11] ls /
[zookeeper, zk_test]

注意到zk_test文件目录已经被新建立了。

接下来通过运行get命令来查验一下联系到节点(znode)的数据,如下:

[zkshell: 12] get /zk_test
my_data
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 5
mtime = Fri Jun 05 13:57:06 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0
dataLength = 7
numChildren = 0

我们可以通过运行set命令来改变联系到zk_test节点的数据,如下所示:

[zkshell: 14] set /zk_test junk
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 6
mtime = Fri Jun 05 14:01:52 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0
dataLength = 4
numChildren = 0[zkshell: 15] get /zk_test
junk
cZxid = 5
ctime = Fri Jun 05 13:57:06 PDT 2009
mZxid = 6
mtime = Fri Jun 05 14:01:52 PDT 2009
pZxid = 5
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0
dataLength = 4
numChildren = 0

注意,在设置完数据后,使用了get命令查看,可以看到确实联系到节点的数据已经改变了。

最后,我们把这个发布的节点删除了。

[zkshell: 16] delete /zk_test
[zkshell: 17] ls /
[zookeeper]
[zkshell: 18]

如果想了解更多,可以参看Programmer’s Guide

三、运行重复模式的zookeeper (Running Replicated ZooKeeper)

​ 将zookeeper运行在单机模式可以方便于评估、一些开发和测试。但是在产品中,你应该运行zookeeper的重复模式。在一些应用中,一个重复的服务器组被称为一个仲裁(a quorum)。在重复模式中,在仲裁中的所有服务器都有同一个配置文件的拷贝。

注意: 在重复模式中,最少需要三个服务器,并且强烈建议你有奇数个服务器。如果你仅仅只有两个服务器,在这种情况下,如果其中一个失败,那么将没有足够的机器来形成一个主要的仲裁。两个服务器还不如一个服务器稳定,因为存在两个单点失败(because there are two single points of failure)。

​ 重复模式中的配置文件和单机模式中的配置文件详细,但有一些差别,下面是一个例子:

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888

​ 其中,initLimit字段是一个超时时间,zookeeper用这个超时时间来限制在仲裁中的服务器必须连接上leader的时间长度。syncLimit字段限制了一个服务器可以断开leader的过期时间。

​ 你可以使用tickTime来指定这两个超时时间的时间单元。在这个例子中,initLimit超时时间设置为5个时钟(ticks),每个时钟是2000毫秒,也就是说initLimit超时时间为10秒。

​ 字段server.X列出了组成zookeeper服务的服务器。当服务器启动的时候,机器可以通过查找数据目录(the data directory)中的myid来确定自己是哪个服务器。这个文件包含用ASCII码编码的服务器编号。

​ 最后要注意一下服务器名后面的两个端口号:“2888”和"3888"。节点通过形式化的端口去连接其他节点。

这个连接对于节点直接的通信是必要的,例如,节点之间决定更新信息的顺序。更具体一点,Zookeeper使用这个端口将follower连接到leader。当一个新leader出现时,follower使用这个端口来打开一个到leader的TCP连接。因为默认的leader选举也是使用TCP协议,所以我们现在需要另外一个端口来进行leader的选举。这个端口就是第二个端口。

​ 注意:在同一个机器上,可以配置不同的端口来模拟多个zookeeper节点。也可以建立多个虚拟机,但这仍然时脆弱的。最好是使用多个实体物理机器。

四、配置zookeeper分布式模式

​ 将上面重复模式的文件夹整体发送到各个服务器上,并且在每个机器上为zoo.cfg中dataDir字段对应的路径建立空文件夹,并且在建立的文件夹中创建一个myid文件,在其中写上一个数字。每个服务器节点上的myid文件中的数字都不能一样。

​ 然后在每个服务器节点上的zookeeper安装目录下执行下面的命令来启动zookeeper服务。

bin/zkServer.sh start

​ 查看每个节点是follower还是leader可以使用下面的命令:

bin/zkServer.sh status

总结

​ 不一定一下就成功了,中间配置的时候尽量慢一点、仔细一点。如果出现什么问题,一定要查看日志。zookeeper的日志会输出在执行zkServer.sh start命令的工作目录下,文件名称为zookeeper.out。也可以通过修改bin/zkEnv.sh文件中的变量来指定日志输出位置,具体参看修改Zookeeper输出日志 zookeeper.out输出路径。

五、异常情况处理

在执行zkServer.sh start命令启动zookeeper后,再使用zkServer.sh status查看状态时,可能会出现下面的异常信息:

hduser@vm-01:/opt/zookeeper/zookeeper-3.4.5$ bin/zkServer.sh status
JMX enabled by default
Using config: /opt/zookeeper/zookeeper-3.4.5/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

出现这异常的原因是在查看状态的时候,其他zookeeper节点还没有启动起来,所以也就还没办法选举出leader,其他zookeeper节点启动后,稍等一会儿再使用zkServer.sh status查看状态,那么就可以看到正常的状态报告了,如下所示:

hduser@vm-01:/opt/zookeeper/zookeeper-3.4.5$ bin/zkServer.sh status
JMX enabled by default
Using config: /opt/zookeeper/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower

Zookeeper-3.4.5安装步骤及异常处理相关推荐

  1. ZooKeeper实战(一):ZooKeeper原理,详细安装步骤,基本命令,节点间通信原理

    回顾Redis 用redis实现分布式锁比较复杂,使用zookeeper会比较简单. 一.ZooKeeper介绍 官网 https://zookeeper.apache.org/ 概览文档 https ...

  2. 本地搭建Dubbo监控中心的安装步骤

    Dubbo监控中心的安装步骤 参考链接:http://blog.csdn.net/lichunan/article/details/40349645 一.从github上下载dubbo源码进行编译: ...

  3. kafka安装完整步骤_还在寻找Kafka最新的安装教程吗?精细的安装步骤分享给大家...

    Kafka集群部署 概述 之前的大数据集群主要是离线处理的方式对集群的数据进行开发处理.当前的集群数据量已经达到了PB级别了,离线数据获取主要是从数仓侧进行全量或者增量的方式导入大数据平台,部分是通过 ...

  4. ZK锦集:Zookeeper的下载和安装 | 真/伪集群的快速搭建| 总结的很详细

    前言 文章力求:通俗易懂.图文并茂.系统全面,语言精练,主要介绍以下知识点: 1.zk基础知识铺路,做到屋里有粮,心中不慌 2.zk的下载.安装.核心参数配置.节点参数释义 3.zk集群快速搭建的两种 ...

  5. Atlas 2.2.0源码编译及安装步骤

    Atlas 2.2.0源码编译及安装步骤 一.源码编译 1. 下载源码 2. 前置环境安装 3. 修改版本号 4. 修改源码中 atlas与kafka版本兼容问题 5. 开始编译 6. 问题锦集 二. ...

  6. Ambari2.6详细安装步骤

    Ambari详细安装步骤 Ambari简介 Ambari跟Hadoop等开源软件一样,也是Apache Software Foundation中的一个项目,并且是顶级项目.目前最新的发布版本是2.7. ...

  7. Windows10下python-pcl的安装步骤说明,亲测ok

    Windows10下python-pcl的安装步骤说明 1. 环境依赖 2. 安装步骤 2.1 安装visual studio 2017 2.2 安装pcl并配置环境变量 2.3 编译python-p ...

  8. x9此计算机上没有hasp_mastercam x9安装步骤

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. mastercam x9安装步骤是: 1.首先,先下载好mastercam软件,下载安装包的大小为3.01G,双击打开setup. ...

  9. 1-flutter 安装步骤

    flutter 安装步骤 1 下载SDK SDK 下载地址 2 解压压缩包 将sdk 文件夹丢进系统的应用程序(Application)的目录 3 配置环境变量 命令行 open ~/.bash_pr ...

最新文章

  1. TensorRT优化方案图例
  2. php函数get_magic_quotes_gpc详解
  3. html table运用方法,HTML Table caption用法及代码示例
  4. arcgis api for flex 开发入门(九)webservices 的使用
  5. WFP在包含fwpmu.h头的时候出错
  6. 机器学习中用来防止过拟合的方法有哪些?
  7. java三层架构项目事例_三层架构实例
  8. 【BIRT】使用rptlibrary设置统一数据源
  9. 【OpenPose-Windows】OpenPose+VS2015+Windows+CUDA8+cuDNN5.1 官方配置教程
  10. 190120每日一句
  11. c#编程实战宝典 付强_C#编程实战宝典(光盘内容另行下载,地址见书封底)
  12. ArcEngine修改像素值与像元值
  13. iOS从零开始与Swift:简而言之的Swift
  14. 如何让客户接受你的价格比别人更高?
  15. 第二次练车,练了一天倒库
  16. stm32f4晶振管理
  17. linux下搭建svn仓库
  18. 端午假期你是如何过的?
  19. 坑 -- h5获取用户当前定位
  20. 怎么保存页面为html,怎样把一个网页保存到电脑上并且保存为HTML文件?

热门文章

  1. 亿赛通携手湖北省勘察设计协会 共建数据安全
  2. 股票中如何数浪(数细浪)转自http://frend1.bokee.com/viewdiary.41172456.html
  3. 搭积木的诀窍(数学题)
  4. 中国企业在欧洲专利申请量高居第一名,凸显技术研发实力持续提升
  5. 电脑监控软件有哪些?具体功能是什么
  6. IOC和AOP的常见面试题
  7. CentOS7克隆虚拟机需要修改的配置
  8. mmdet3d纯视觉baseline之数据准备:处理waymo dataset v1.3.1
  9. 团队协作出了问题,项目经理怎么办?
  10. rust php 扩展,在PHP程序中使用Rust扩展的方法