ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效、高可用的分布式协调服务,提供了诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知和分布式锁等分布式基础服务。由于 ZooKeeper 便捷的使用方式、卓越的性能和良好的稳定性,被广泛地应用于诸如 Hadoop、HBase、Kafka 和 Dubbo 等大型分布式系统中。

一、运行模式

Zookeeper 有三种运行模式:单机模式、伪集群模式和集群模式。

1、 单机模式

这种模式一般适用于开发测试环境,一方面我们没有那么多机器资源,另外就是平时的开发调试并不需要极好的稳定性。

在 Linux 环境下运行单机模式需要执行以下步骤:

1). 准备 Java 运行环境

安装 Java 1.6 或更高版本的 JDK,并配置好 Java 相关的环境变量 $JAVA_HOME

sudo apt-get install default-jdk

2). 下载 ZooKeeper 安装包

下载地址:http://zookeeper.apache.org/releases.html。选择最新的 stable 版本并解压到指定目录,我们用 $ZK_HOME 表示该目录。

命令安装Zookeeper

cd /home/tomny/zookeeper
sudo wget http://mirror.bjtu.edu.cn/apache/zookeeper/stable/zookeeper-3.4.9.tar.gz #下载zookeeper
tar xvzf zookeeper-3.4.9.tar.gz #解压
ln -s zookeeper-3.4.9 zookeeper #建立软链接

编辑/etc/profile 设置环境变量

# zookeeper配置
export ZOOKEEPER_INSTALL=/home/hadoop/zookeeper-3.3.5
export PATH=$PATH:$ZOOKEEPER_INSTALL/bin

3). 配置 zoo.cfg

首次使用 ZooKeeper,需要将 $ZK_HOME 下的 zoo_sample.cfg 文件重命名为 zoo.cfg,并进行以下配置

tickTime=    ##Zookeeper最小时间单元,单位毫秒(ms),默认值为3000
dataDir=/home/tommy/zookeeper-3.4.9/data ##Zookeeper服务器存储快照文件的目录,必须配置
dataLogDir=/home/tomny/zookeeper-3.4.9/log ##Zookeeper服务器存储事务日志的目录,默认为dataDir
clientPort= ##服务器对外服务端口,一般设置为2181
initLimit= ##Leader服务器等待Follower启动并完成数据同步的时间,默认值10,表示tickTime的10倍
syncLimit= ##Leader服务器和Follower之间进行心跳检测的最大延时时间,默认值5,表示tickTime的5倍

4). 启动服务

使用 $ZK_HOME/bin 目录下的 zkServer.sh 脚本进行服务的启动。

cd /home/tomny/zookeeper-3.4.9/
bin/zkServer.sh start
bin/zkCli.sh -server localhost:2181

在查看zookeeper状态时遇到

tomny@tomny-virtual-machine:~/zookeeper-3.4.$ bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/tomny/zookeeper-3.4./bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

分析方法:

先stop 掉原zk

zkServer.sh stop

然后以start-foreground方式启动,会看到启动日志

zkServer.sh start-foreground
tomny@tomny-virtual-machine:~/zookeeper-3.4.$ bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/tomny/zookeeper-3.4./bin/../conf/zoo.cfg
Mode: standalone

5)、连接zookeeper

bin/zkCli.sh -server localhost:
Connecting to localhost:
以下省略1W字。。
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:(CONNECTED) ]

6)、键入help查看所有支持的命令

[zk: localhost:(CONNECTED) ] help

ZooKeeper -server host:port cmd args

        stat path [watch]

        set path data [version]

        ls path [watch]

        delquota [-n|-b] path

        ls2 path [watch]

        setAcl path acl

        setquota -n|-b val path

        history

        redo cmdno

        printwatches on|off

        delete path [version]

        sync path

        listquota path

        rmr path

        get path [watch]

        create [-s] [-e] path data acl

        addauth scheme auth

        quit

        getAcl path

        close

        connect host:port

2、常用命令

1)查看当前节点列表

[zk: localhost:(CONNECTED) ] ls /

[zookeeper]

2)创建节点

[zk: localhost:(CONNECTED) ] create /test "test"

Created /test

[zk: localhost:(CONNECTED) ] ls /

[zookeeper, test]

3)查看节点数据

[zk: localhost:(CONNECTED) ] get /test

"test"

cZxid = 0x300000007

ctime = Thu Sep  :: PDT 

mZxid = 0x300000007

mtime = Thu Sep  :: PDT 

pZxid = 0x300000007

cversion = 

dataVersion = 

aclVersion = 

ephemeralOwner = 0x0

dataLength = 

numChildren = 

4)设置节点数据

[zk: localhost:(CONNECTED) ] set /test "" 

cZxid = 0x300000007

ctime = Thu Sep  :: PDT 

mZxid = 0x300000008

mtime = Thu Sep  :: PDT 

pZxid = 0x300000007

cversion = 

dataVersion = 

aclVersion = 

ephemeralOwner = 0x0

dataLength = 

numChildren = 

[zk: localhost:(CONNECTED) ] get /test

""

cZxid = 0x300000007

ctime = Thu Sep  :: PDT 

mZxid = 0x300000008

mtime = Thu Sep  :: PDT 

pZxid = 0x300000007

cversion = 

dataVersion = 

aclVersion = 

ephemeralOwner = 0x0

dataLength = 

numChildren = 

5)删除节点

[zk: localhost:(CONNECTED) ] delete /test

[zk: localhost:(CONNECTED) ] ls /

[zookeeper]

3、zookeeper四字命令的使用

传递四个字母的字符串给zookeeper,zookeeper会返回一些有用的信息。

zookeeper

四字命令

功能描述

conf

输出相关服务配置的详细信息。

cons

列出所有连接到服务器的客户端的完全的连接 /会话的详细信息。包括“接受 / 发送”的包数量、会话 id 、操作延迟、最后的操作执行等等信息。

dump

列出未经处理的会话和临时节点。

envi

输出关于服务环境的详细信息(区别于 conf命令)。

reqs

列出未经处理的请求

ruok

测试服务是否处于正确状态。如果确实如此,那么服务返回“imok ”,否则不做任何相应。

stat

输出关于性能和连接的客户端的列表。

wchs

列出服务器 watch的详细信息。

wchc

通过 session列出服务器 watch的详细信息,它的输出是一个与watch相关的会话的列表。

wchp

通过路径列出服务器 watch的详细信息。它输出一个与 session相关的路径。

【先定一个小目标】Ubuntu 16.04 搭建 zookeeper的更多相关文章

  1. 【转】64位Ubuntu 16.04搭建嵌入式交叉编译环境arm-linux-gcc过程图解

    64位Ubuntu 16.04搭建嵌入式交叉编译环境arm-linux-gcc过程图解,开发裸机环境之前需要先搭建其开发环境,毕竟工欲善其事必先利其器嘛.  安装步骤 1.准备工具安装目录 下载 ar ...

  2. 先定一个小目标,自己封装个ajax

    你是否发现项目中有很多页面只用到了框架不到十分之一的内容,还引了压缩后还有70多kb的jquery库 你是否发现项目中就用了两三个underscore提供的方法,其他大部分的你方法你甚至从来没有看过 ...

  3. Ubuntu 16.04搭建php5.6 Web服务器环境

    Ubuntu 16.04默认安装php7.0环境,但是php7目前兼容性并不是很好,如果自行安装php5需要清除php7的已安装包,否则会报错. 移除默认及已安装的PHP包 sudo dpkg -l ...

  4. CentOS 6.9/Ubuntu 16.04搭建OpenVPN服务器以及客户端的使用

    说明: 1.发现一个很奇怪的现象,CentOS和Ubuntu有着对用户不同的管理理念,比如CentOS中安装一切软件都是以root优先(su -),而Ubuntu则以当前用户优先,安装软件以sudo开 ...

  5. 【netcore基础】ubuntu 16.04 搭建.net core 2.1 linux 运行环境 nginx反向代理 supervisor配置自启动

    今天来整理下 netcore 在 linux(ubuntu) 上的运行环境搭建 对应版本 ubuntu 16.04 .net core 2.1 nginx version: nginx/1.10.3 ...

  6. 阿里云ubuntu 16.04搭建odoo11服务器

    ubuntu 16.04 具体如何搭建odoo11网站的具体步骤可以参考这一篇文章 按上面的文章配置环境后,自己网站的启动具体步骤如下: 1.登录阿里云 [远程连接],进入命令行界面1 2.cd到目录 ...

  7. Ubuntu 16.04搭建OpenVPN服务器以及客户端的使用

    说明:启动时注意用户权限,比如root用户启动. Ubuntu: 服务器环境:Ubuntu 16.04 64位系统 内网IP:10.143.80.116 外网IP:203.195.1.2 OpenVP ...

  8. Ubuntu 16.04 搭建KVM环境

      在Ubuntu 16.04下搭建KVM环境过程记录. 1 查看CPU是否支持KVM egrep "(svm|vmx)" /proc/cpuinfo 有结果输出,如下图: 2 安 ...

  9. 先定一个小目标:10天自学C语言编程,教你如何改变一生

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

随机推荐

  1. 使用WIN32汇编语言实现一个基本windows窗体的过程分析

    一个常规的windows窗体一般都是一些一样的构造.你假设想要更改一些个性化的设置,你能够在这个一般的模板伤添砖加瓦.构造自己比較喜欢的类型.下边就分析一下一般的windows窗体的一般模板. 一. ...

  2. hdu4941 Magical Forest

    Problem Description There is a forest can be seen as N * M grid. In this forest, there is some magic ...

  3. 通过通过url routing解决UIViewController跳转依赖

    XYRouter https://github.com/uxyheaven/XYRouter XYRouter是一个通过url routing来解决UIViewController跳转依赖的类. * ...

  4. Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content

    Content-Type https://tools.ietf.org/html/rfc7231#section-3.1.1.5 https://tools.ietf.org/html/rfc7231 ...

  5. POJO与javabean的区别

    POJO 和JavaBean是我们常见的两个关键字,一般容易混淆,POJO全称是Plain Ordinary Java Object / Pure Old Java Object,中文可以翻译成:普通 ...

  6. [Android6.0][RK3399] 电池系统(三)电量计 CW2015 驱动流程分析【转】

    本文转载自:http://blog.csdn.net/dearsq/article/details/72770295 Platform: RK3399 OS: Android 6.0 Kernel: ...

  7. eclipse自动创建项目出错Cannot change version of project facet Dynamic Web Module to 2.3.

    Cannot change version of project facet Dynamic Web Module to 2.3. step1:修改properties step2:修改web.xml ...

  8. Managing SQLite Database

    Approach #1: Use a Singleton to Instantiate the SQLiteOpenHelper Declare your database helper as a s ...

  9. pybot执行多条用例时,某一个用例执行失败,停止所有用例的执行

    问题: pybot执行多条用例时,某一个用例执行失败,停止所有用例的执行 解决办法: pybot -exitonfailure E:\robot\呼送项目\测试用例\基本流程\主流程.txt 参考文章 ...

  10. css3 vw -----解决页面滚动出现跳动的bug

    100vw相对于浏览器的window.innerWidth,是浏览器的内部宽度,注意,滚动条宽度也计算在内!而100%是可用宽度,是不含滚动条的宽度. demo: h1{font-size:8vw;} ...