单机模式

下载zookeeper的包

wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

解压、分解归档包

gzip -d zookeeper-3.4.9.tar.gz
tar -xf zookeeper-3.4.9.tar

修改配置文件

查看下默认的配置文件,基本符合本次测试要求。将zoo_sample.cfg拷贝为zoo.cfg

cp zoo_sample.cfg zoo.cfg

zoo.cfg配置的简单解释:

[root@localhost bin]# cat /usr/local/zookeeper-3.4.9/conf/zoo.cfg
# The number of milliseconds of each tick
tickTime=2000 # zk最小的单位时间,其他很多时间参数是此单位时间的n倍
# The number of ticks that the initial
# synchronization phase can take
initLimit=10 # Leader服务器等待Follow服务器启动,完成数据同步的时间。这里配置为10表示单位时间的10倍
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5 # Leader服务器与Follow服务器心跳检测的最大无响应时间
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/var/zookeeper # 快照文件存储目录
# the port at which the clients will connect
clientPort=2181 # 服务端口
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

启动

[root@localhost bin]# sh zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.9/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

查看启动日志

[root@localhost bin]# less zookeeper.out

测试是否成功

[root@localhost bin]# telnet 127.0.0.1 2181
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
stat
Zookeeper version: 3.4.9-1757313, built on 08/23/2016 06:50 GMT
Clients:
/127.0.0.1:42587[0](queued=0,recved=1,sent=0) Latency min/avg/max: 0/0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x0
Mode: standalone
Node count: 4
Connection closed by foreign host.

关闭

[root@localhost local]# sh /usr/local/zookeeper-3.4.9/bin/zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.9/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

单机模式(Windows)

如果我们在Windows下开发,最方便地是用Windows版本的ZooKeeper,安装起来非常方便。

下载

下载的版本与Linux版本一致的,并没有就不同的平台下载不同的包。

下载后就解压吧。

修改配置

在ZooKeeper的conf目录下,拷贝一份zoo_sample.cfg文件,命名为zoo.cfg,修改dataDir的值为Windows的路径格式,比如dataDir=d:/tmp/zookeeper

启动

在ZooKeeper的bin目录下,运行zkServer.cmd即运行ZooKeeper了,默认端口为2181。

集群模式

集群模式,最少需要3个节点。

修改配置

我们沿用基础配置,在zoo.cfg后面追加各节点的地址:

server.1=192.168.1.101:2888:3888
server.2=192.168.1.102:2889:3889
server.3=192.168.1.103:2890:3890

这里的端口我都分离开来了,因为我的其中两个虚拟系统安装在同一物理机器中,为了避免冲突。

拷贝文件到其他节点

将修改好的完整的zookeeper远程拷贝到另外两个节点:

scp -r /usr/local/zookeeper-3.4.9-cluster/ root@192.168.1.102:/usr/local/
scp -r /usr/local/zookeeper-3.4.9-cluster/ root@192.168.1.103:/usr/local/

创建myid标识节点

需要在各个节点的数据目录中用一个叫myid的文件标识自己的节点ID,myid的内容只有一个ID,对照zoo.cfg的配置,这里应该分别是1、2、3。

各个节点分别执行以下3条指令(一个节点一条):

echo "1" > /var/zookeeper/myidecho "2" > /var/zookeeper/myidecho "3" > /var/zookeeper/myid

启动

sh /usr/local/zookeeper-3.4.9-cluster/bin/zkServer.sh start

测试是否成功

[root@localhost local]# telnet 127.0.0.1 2181
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
stat
Zookeeper version: 3.4.9-1757313, built on 08/23/2016 06:50 GMT
Clients:
/127.0.0.1:46009[0](queued=0,recved=1,sent=0) Latency min/avg/max: 0/0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x300000000
Mode: leader
Node count: 4
Connection closed by foreign host.

可能遇到的问题

  • 端口的冲突
  • 防火墙拦截了
  • myid没配置或配置不正确

客户端命令

客户端连接命令

连接命令:/opt/zookeeper-3.4.9/bin/zkCli.sh -server 127.0.0.1:2181进入客户端命令行模式。

查看指定路径下的节点

[zk: 127.0.0.1:2181(CONNECTED) 0] ls /
[my-elastic-job-nn, zookeeper]

其中/zookeeper是保留的节点,而my-elastic-job-nn是我创建的节点。

查看节点的信息

[zk: 127.0.0.1:2181(CONNECTED) 7] get /my-elastic-job-nn/mySimpleJob/config
{"jobName":"mySimpleJob","jobClass":"com.nicchagil.MySimpleJob","jobType":"SIMPLE","cron":"0/5 * * * * ?","shardingTotalCount":2,"shardingItemParameters":"0\u003dX,1\u003dY","jobParameter":"myParameter\u003d123","failover":false,"misfire":true,"description":"","jobProperties":{"job_exception_handler":"com.dangdang.ddframe.job.executor.handler.impl.DefaultJobExceptionHandler","executor_service_handler":"com.dangdang.ddframe.job.executor.handler.impl.DefaultExecutorServiceHandler"},"monitorExecution":true,"maxTimeDiffSeconds":-1,"monitorPort":9999,"jobShardingStrategyClass":"","reconcileIntervalMinutes":-1,"disabled":false,"overwrite":true}
cZxid = 0x5
ctime = Thu Aug 03 08:25:46 PDT 2017
mZxid = 0x1a2b
mtime = Sat Aug 05 09:47:41 PDT 2017
pZxid = 0x5
cversion = 0
dataVersion = 20
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 646
numChildren = 0

输入结果的JSON是节点的内容,后面分别是节点的信息:

  • cZxid,创建节点的事务ID
  • ctime,创建节点的时间
  • mZxid,最后更新节点的事务ID
  • mtime,节点的最后更新时间
  • pZxid,最后更新当前节点子节点列表的事务ID
  • cversion,TODO
  • dataVersion,TODO
  • aclVersion,节点的ACL变更版本
  • ephemeralOwner,TODO
  • dataLength,节点内容的长度
  • numChildren,子节点的个数

创建节点

创建一个持久节点

[zk: 127.0.0.1:2181(CONNECTED) 7] create /my-data 123456
Created /my-data

创建一个临时节点:

[zk: 127.0.0.1:2181(CONNECTED) 0] create -e /my-extemporaneous-node 123456
Created /my-extemporaneous-node
[zk: 127.0.0.1:2181(CONNECTED) 1] get /my-extemporaneous-node
123456
cZxid = 0x1a58
ctime = Sat Aug 05 10:34:35 PDT 2017
mZxid = 0x1a58
mtime = Sat Aug 05 10:34:35 PDT 2017
pZxid = 0x1a58
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x15da922d510000b
dataLength = 6
numChildren = 0

创建顺序的节点:

[zk: 127.0.0.1:2181(CONNECTED) 2] create -s /my-sequential-node 123456
Created /my-sequential-node0000000005

设置节点的值

[zk: 127.0.0.1:2181(CONNECTED) 7] set /my-data 789
cZxid = 0x1a5c
ctime = Sat Aug 05 10:37:27 PDT 2017
mZxid = 0x1a5d
mtime = Sat Aug 05 10:37:51 PDT 2017
pZxid = 0x1a5c
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0

删除节点

[zk: 127.0.0.1:2181(CONNECTED) 4] delete /my-data

级联删除节点

如果节点有子节点,通过delete无法删除,可通过rmr删除

[zk: 127.0.0.1:2181(CONNECTED) 4] rmr /my-data

【ZooKeeper】ZooKeeper入门流水记的更多相关文章

  1. zookeeper编程入门系列之zookeeper实现分布式进程监控和分布式共享锁(图文详解)

    本博文的主要内容有 一.zookeeper编程入门系列之利用zookeeper的临时节点的特性来监控程序是否还在运行   二.zookeeper编程入门系列之zookeeper实现分布式进程监控 三. ...

  2. zookeeper从入门到放弃

    第1章 Zookeeper入门 1.1 概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. 1.2 特点 1.3 数据结构 1.4 应用场景 提供的服务包括:统 ...

  3. zookeeper快速入门

    一.zookeeper简介 zookeeper 是apache旗下的hadoop子项目,它一个开源的,分布式的服务协调器.同样通过zookeeper可以实现服务间的同步与配置维护.通常情况下,在分布式 ...

  4. ZooKeeper学习总结 第一篇:ZooKeeper快速入门

    1. 概述 Zookeeper是Hadoop的一个子项目,它是分布式系统中的协调系统,可提供的服务主要有:配置服务.名字服务.分布式同步.组服务等. 它有如下的一些特点: 简单 Zookeeper的核 ...

  5. Zookeeper基础入门介绍

    什么Zookeeper Zookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization).命 ...

  6. dubbo zookeeper图解入门配置

    这次主要是对dubbo 和zookeeper的配置做个记录,以便以后自己忘记了,或者踩的坑再次被踩 快速阅读 zookeerer类似 springcloud中的Eureka都做为注册中心,用srpin ...

  7. [Big Data - ZooKeeper] ZooKeeper: A Distributed Coordination Service for Distributed Applications

    ZooKeeper ZooKeeper: A Distributed Coordination Service for Distributed Applications Design Goals Da ...

  8. Zookeeper - zookeeper安装与配置

    1.什么时Zookeeper ZooKeeper:分布式服务框架 Zookeeper -- 管理分布式环境中的数据. 2.安装 1>官网下载压缩包并解压zookeeper-3.4.14.zip ...

  9. Python入门随记(2)

    1.二维列表的声明 [['pygis'],['gis']] 2.CSV格式的本质,是用,作为分隔符. 3.for循环 for -- in -- 例: a=0 for i in range(100): ...

随机推荐

  1. jooq实践

    用法 sql语句 SELECT AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, COUNT(*) FROM AUTHOR JOIN BOOK ON AUTHOR.ID = B ...

  2. HDU.3516.Tree Construction(DP 四边形不等式)

    题目链接 贴个教程: 四边形不等式学习笔记 \(Description\) 给出平面上的\(n\)个点,满足\(X_i\)严格单增,\(Y_i\)严格单减.以\(x\)轴和\(y\)轴正方向作边,使这 ...

  3. 在web.xml中配置Spring的application.xml

    <context-param> <!-- 请记住这里的名称不能够乱写,必须一模一样,区分大小写 java类去启动项目 contextClass--> <param-nam ...

  4. 【洛谷】3960:列队【Splay】

    P3960 列队 题目描述 Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有n×m名学生,方阵的行数为  ...

  5. 20172302 《Java软件结构与数据结构》第四周学习总结

    2018年学习总结博客总目录:第一周 第二周 第三周 第四周 教材学习内容总结 第六章 列表 1.列表是对象的有序集合,在 List 界面中定义. List 接口表示集合框架中的列表.列表可以具有重复 ...

  6. pthread_once详解和使用

    转自:pthread_once()函数详解 .pthread_once()使用 在多线程环境中,有些事仅需要执行一次.通常当初始化应用程序时,可以比较容易地将其放在main函数中.但当你写一个库时,就 ...

  7. ffmpeg for iOS

    链接: ios ffmpeg 实时视频压缩(主要是H264) 最简单的基于FFmpeg的移动端例子:IOS 视频转码器 iOS下使用FFMPEG的一些总结 iOS配置FFmpeg框架 iOS上使用高大 ...

  8. 各种Oracle索引类型介绍

    逻辑上:Single column 单行索引Concatenated 多行索引Unique 唯一索引NonUnique 非唯一索引Function-based函数索引Domain 域索引 物理上:Pa ...

  9. 关于在win8系统下用VMware 9.0装系统导致物理机不断重启的解决办法

    一.问题描述 前段时间将操作系统换成了Win8,安装上VMware 9.0英文版.然后在VMware中安装centos系统,结果每次到安装系统的时候,物理机系统就会莫名其妙地自动重启,毫无征兆地出现, ...

  10. 用.Net打造一个移动客户端(Android/IOS)的服务端框架NHM(四)——Android端Http访问类(转)

    本章目的 在上一章中,我们利用Hibernate Tools完成了Android Model层的建立,依赖Hibernate Tools的强大功能,自动生成了Model层.在本章,我们将继续我们的项目 ...