ZooKeeper安装与运行

首先从官网下载ZooKeeper压缩包,然后解压下载得到的ZooKeeper压缩包,发现有“bin,conf,lib”等目录。“bin目录”中存放有运行脚本;“conf目录”中存放有配置文件;“lib目录”中存放有运行所需要第三方库。

一、standalone模式

1.1、编辑配置文件

在“conf”目录下,新建一个名为“zoo.cfg”的文件,其中内容如下:

tickTime=2000
dataDir=/home/dsl/tmp/zookeeper
clientPort=2181
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

1.2、运行ZooKeeper Server

执行bin/zkServer.sh start命令,运行ZooKeeper Server进程,得到如图1所示结果,表示后台运行ZooKeeper Server进程成功。

图1 

也可以执行bin/zkServer.sh start-foreground命令,非后台运行ZooKeeper Server进程,得到如图2所示结果。

图2 

1.3、运行ZooKeeper命令行客户端

执行bin/zkCli.sh -server 127.0.0.1:2181命令,运行ZooKeeper命令行客户端,得到如图3所示界面,可以在其中调用操作Znode节点树的API。

图3 

1.4、调用操作Znode节点树的API

进入“1.3、运行ZooKeeper命令行客户端”中得到的界面,调用操作Znode节点树的API。 
1、获取初始Znode节点 
初始时,存在路径标识为“/zookeeper”的Znode节点,该Znode节点保存一些元数据,不能被删除。 
执行ls /命令,可得到如图4所示结果。

图4 

2、创建Znode节点 
执行create /data "data"命令,创建一个Znode节点,路径标识为“/data”,包含内容“data”。再执行ls /命令,得到如图5所示结果。

图5 

3、删除Znode节点 
执行delete /data命令,删除路径标识为“/data”的Znode节点。再执行ls /命令,得到如图6所示结果。

图6 

二、quorum模式

使用quorum模式有两种形式:1)使用多台机器,在每台机器上运行一个ZooKeeper Server进程;2)使用一台机器,在该台机器上运行多个ZooKeeper Server进程。在生产环境中,一般使用第一种形式,在练习环境中,一般使用第二种形式。

2.1、参数配置

quorum模式下,要使一个ZooKeeper Server进程能够正常运行,需要配置一些参数,以下是常见的一些参数。 
1、data目录 
用于存放进程运行数据。 
2、data目录下的myid文件 
用于存储一个数值,该数值用来作为该ZooKeeper Server进程的标识。 
3、监听Client端请求的端口号 
该端口号用来监听Client端请求。(关于“Client”见《ZooKeeper》 Chapter 2 Getting to Grips with ZooKeeper的图2) 
4、监听同ZooKeeper集群内其他ZooKeeper Server进程通信请求的端口号 
该端口号用来监听同ZooKeeper集群内其他ZooKeeper Server进程的通信请求。 
5、监听ZooKeeper集群内“leader”选举请求的端口号 
该端口号用来监听ZooKeeper集群内“leader”选举的请求。注意这个是ZooKeeper集群内“leader”的选举,跟分布式应用程序无关。

参数配置注意事项: 
1)同一个ZooKeeper集群内,不同ZooKeeper Server进程的标识需要不一样,即myid文件内的值需要不一样 
2)采用上述第2种形式构建ZooKeeper集群,需要注意“目录,端口号”等资源的不可共享性,如果共享会导致ZooKeeper Server进程不能正常运行,比如“data目录,几个监听端口号”都不能被共享

2.2、举例

采用上述第2种形式构建一个使用quorum模式的ZooKeeper集群,集群规划如表1所示。

表1

ZooKeeper Server进程标识(myid文件内数值) data目录 监听Client端请求的端口号 监听同ZooKeeper集群内其他ZooKeeper Server进程通信请求的端口号 监听ZooKeeper集群内“leader”选举请求的端口号 配置文件名称
1 /home/dsl/bigdisk/apps/zookeeper-3.4.8/deploy/z1/data 2181 2222 2223 z1.cfg
2 /home/dsl/bigdisk/apps/zookeeper-3.4.8/deploy/z2/data 2182 3333 3334 z2.cfg
3 /home/dsl/bigdisk/apps/zookeeper-3.4.8/deploy/z3/data 2183 4444 4445 z3.cfg

相应的目录结构如图1所示。

图1 

“z1.cfg,z2.cfg,z3.cfg”这3个文件的文件内容分别如下所示。

# z1.cfg
tickTime=2000
initLimit=10
syncLimit=5 dataDir=/home/dsl/bigdisk/apps/zookeeper-3.4.8/deploy/z1/data
clientPort=2181
# server.x中的“x”表示ZooKeeper Server进程的标识
# 同一个ZooKeeper集群内的ZooKeeper Server进程间的通信不仅可以使用具体的点IP地址,也可以使用组播地址
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
# z2.cfg
tickTime=2000
initLimit=10
syncLimit=5 dataDir=/home/dsl/bigdisk/apps/zookeeper-3.4.8/deploy/z2/data
clientPort=2182
# server.x中的“x”表示ZooKeeper Server进程的标识
# 同一个ZooKeeper集群内的ZooKeeper Server进程间的通信不仅可以使用具体的点IP地址,也可以使用组播地址
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
# z3.cfg
tickTime=2000
initLimit=10
syncLimit=5 dataDir=/home/dsl/bigdisk/apps/zookeeper-3.4.8/deploy/z3/data
clientPort=2183
# server.x中的“x”表示ZooKeeper Server进程的标识
# 同一个ZooKeeper集群内的ZooKeeper Server进程间的通信不仅可以使用具体的点IP地址,也可以使用组播地址
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

2.2.1、运行ZooKeeper Server

分别执行bin/zkServer.sh start deploy/z1/z1.cfgbin/zkServer.sh start deploy/z2/z2.cfgbin/zkServer.sh start deploy/z3/z3.cfg命令,运行上述配置的3个ZooKeeper Server进程。

2.2.2、运行ZooKeeper命令行客户端

执行bin/zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183命令,建立ZooKeeper Client端到ZooKeeper集群的连接会话。

2.2.3、调用操作Znode节点树的API

跟“1.4、调用操作Znode节点树的API”一样,可以在“2.2.2、运行ZooKeeper命令行客户端”中得到的界面内,调用操作Znode节点树的API。

备注: 
根据《ZooKeeper》 Chapter 2 Getting to Grips with ZooKeeper可知,“ZooKeeper命令行客户端”本质上还是使用了Java版驱动程序库提供的API或者C版驱动程序库提供的API。

参考文献: 
[1]https://zookeeper.apache.org/doc/r3.4.8/zookeeperStarted.html 
[2]http://blog.csdn.net/dslztx/article/details/51077606

ZooKeeper安装与运行的更多相关文章

  1. Zookeeper安装及运行

    zookeeper的安装分为三种模式:单机模式.集群模式和伪集群模式. 单机模式 首先,从Apache官网下载一个Zookeeper稳定版本,本次教程采用的是zookeeper-3.4.9版本. ht ...

  2. Zookeeper安装和运行

    安装环境: CentOS 7   内存1GB JDK版本:1.8.0_112 为JDK配置如下环境变量: 编辑/etc/profile.d/jdk.sh JAVA_HOME=/usr/local/jd ...

  3. Linux下zookeeper安装及运行

    zookeeper下载地址:http://archive.apache.org/dist/zookeeper/ 安装 第一步:安装 jdk(此步省略,我给大家提供的镜像已经安装好JDK) 第二步:把 ...

  4. Redis安装,mongodb安装,hbase安装,cassandra安装,mysql安装,zookeeper安装,kafka安装,storm安装大数据软件安装部署百科全书

    伟大的程序员版权所有,转载请注明:http://www.lenggirl.com/bigdata/server-sofeware-install.html 一.安装mongodb 官网下载包mongo ...

  5. ZooKeeper学习第二期--ZooKeeper安装配置

    一.Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式. ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境:■ 伪集群模式:就是在一台物 ...

  6. zookeeper安装以及遇到的一些坑

    最近项目中用到了storm,然后storm中用到了zookeeper,然后今天抽空整理一下zookeeper的安装使用,原来后期再慢慢学习. 本篇文档,操作部分是摘自其他博客,里边的问题分析是自己在实 ...

  7. 【Zookeeper系列】ZooKeeper安装配置(转)

    原文链接:https://www.cnblogs.com/sunddenly/p/4018459.html 一.Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪 ...

  8. zookeeper安装和使用(Windows环境)

    zookeeper安装和使用(Windows环境) 2017年11月27日 10:36:07 董昊炘的博客 阅读数:14785 标签: zookeeperwindows   zookeeper 一.简 ...

  9. 【转载】ZooKeeper学习第二期--ZooKeeper安装配置

    原文地址(https://www.cnblogs.com/sunddenly/p/4018459.html) 一.Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及 ...

随机推荐

  1. c语言,结构体里面的函数

    以linux-3.2内核代码为例,结构体里面的函数的用法: 例,在某驱动文件中,定义了一个平台设备驱动: static struct platform_driver s3c24xx_led_drive ...

  2. Ubuntu中查看硬盘分区UUID的方法(所有Linux目录的解释)

    在Ubuntu中UUID的两种获取方法,至于UUID是什么,你可以大概理解为分区的标识符,像条形码那样. 在终端中输入下面的命令就可心查看到分区UUID了.命令1.sudo blkid 命令2.ls ...

  3. 基于visual Studio2013解决C语言竞赛题之1030计算函数

          题目 解决代码及点评 /********************************************************************** ...

  4. Android ble 蓝牙4.0 总结

    本文介绍Android ble 蓝牙4.0,也就是说API level >= 18,且支持蓝牙4.0的手机才可以使用,如果手机系统版本API level < 18,也是用不了蓝牙4.0的哦 ...

  5. windows和linux套接字中的select机制浅析

    先来谈谈为什么会出现select函数,也就是select是解决什么问题的? 平常使用的recv函数时阻塞的,也就是如果没有数据可读,recv就会一直阻塞在那里,这是如果有另外一个连接过来,就得一直等待 ...

  6. HDU 4350 Card

    打表找规律,比赛应付了一下,其实还可以把内存再优化一半掉,下面的0都是手动填充的,可以优化掉 题意: T个测试数据 下面52个数字表示 从栈顶到栈底的52个数 n l r表示 从栈顶下数 [l,r] ...

  7. Java面试宝典2014版

    一. Java基础部分......................................................................................... ...

  8. 如何学习php之吐槽

    我也做了php一段时间了.从技术层面上解释吧.   深入学习任何的东西都要有个体系.   1 完整的学习整个体系结构.解决有什么的问题.   推荐看看这个.http://www.open-open.c ...

  9. 设计模式之Prototype(c++)

    Prototype模型: 作用: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象----克隆(clone)对象. Prototype模型类图如下: 形象说明:如果客户想配钥匙(Conc ...

  10. 循环json数据的列

    var len = json.length;  for (var i = 0; i < len; i++)  {   for (obj in json[i])   {    var obj2 = ...