Zookeeper学习记录(二):使用以及配置
来源:互联网 发布:c十十语言范磊视频教程 编辑:程序博客网 时间:2024/06/08 18:33
zookeeper已经介绍了它的原理设计以及实现方式,我们接下来介绍zookeeper的使用方法以及简单配置。
下载
获取Zookeeper的发布包,从Apache下载映像中下载一个最新稳定版本。
单机操作
安装Zookeeper的单机模式非常简单。服务包含在一个单独的压缩文件中,所以安装只需要创建配置文件。
下载了Zookeeper稳定的发布版本之后,解压并进入根目录。
启动Zookeeper之前需要一个配置文件。 conf/zoo.cfg是一个实例文件:
1 tickTime=20002 dataDir=/var/lib/zookeeper3 clientPort=2181
这个文件本来可以叫任何名字,此时我们叫它conf/zoo.cfg。修改dataDir的值为一个已经存在的(空的开始)文件夹。下面是每个字段的含义:
- tickTime:Zookeeper使用的以毫秒为单位的基本时间单位。它用于心跳机制和最小的session超时时间为两倍心跳时间。
- dataDir:保存内存数据库快照信息的位置,如果没有其他说明,更新的事务日志也保存到数据库。
- clientPort:监听客户端连接的端口。
创建了配置文件之后,就可以启动Zookeeper了:
1 bin/zkServer.sh start
管理Zookeeper存储
长时间运行的生产系统上的Zookeeper存储必须要在外部管理(datadir 和 logs),查看 管理员指南的maintenance部分获取更多信息。
连接Zookeeper
1 bin/zkCli.sh -server 127.0.0.1:2181
一旦连接上了,你应对会看到这些信息:
1 Connecting to localhost:21812 log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).3 log4j:WARN Please initialize the log4j system properly.4 Welcome to ZooKeeper!5 JLine support is enabled6 [zkshell: 0]
从shell脚本输入help,可以获取客户端可执行的命令列表,如:
1 [zkshell: 0] help 2 ZooKeeper host:port cmd args 3 get path [watch] 4 ls path [watch] 5 set path data [version] 6 delquota [-n|-b] path 7 quit 8 printwatches on|off 9 createpath data acl10 stat path [watch]11 listquota path12 history13 setAcl path acl14 getAcl path15 sync path16 redo cmdno17 addauth scheme auth18 delete path [version]19 setquota -n|-b val path
第一,通过发行的列表命令开始,像ls :
1 [zkshell: 8] ls /2 [zookeeper]
下一步,通过运行create /zk_test my_data,创建一个新的znode。这将创建一个新的znode节点和一个相关联的字符串"my_data"。你应该看到:
1 [zkshell: 9] create /zk_test my_data2 Created /zk_test
使用ls / 命令查看目录:
1 [zkshell: 11] ls /2 [zookeeper, zk_test]
注意 zk_test目录现在已经创建了。
接下来,使用 get 命令验证数据是否与znode关联上了:
1 [zkshell: 12] get /zk_test 2 my_data 3 cZxid = 5 4 ctime = Fri Jun 05 13:57:06 PDT 2009 5 mZxid = 5 6 mtime = Fri Jun 05 13:57:06 PDT 2009 7 pZxid = 5 8 cversion = 0 9 dataVersion = 010 aclVersion = 011 ephemeralOwner = 012 dataLength = 713 numChildren = 0
我们可以是用set命令改变与zk_test关联的数据:
1 [zkshell: 14] set /zk_test junk 2 cZxid = 5 3 ctime = Fri Jun 05 13:57:06 PDT 2009 4 mZxid = 6 5 mtime = Fri Jun 05 14:01:52 PDT 2009 6 pZxid = 5 7 cversion = 0 8 dataVersion = 1 9 aclVersion = 010 ephemeralOwner = 011 dataLength = 412 numChildren = 013 [zkshell: 15] get /zk_test14 junk15 cZxid = 516 ctime = Fri Jun 05 13:57:06 PDT 200917 mZxid = 618 mtime = Fri Jun 05 14:01:52 PDT 200919 pZxid = 520 cversion = 021 dataVersion = 122 aclVersion = 023 ephemeralOwner = 024 dataLength = 425 numChildren = 0
最后,让我们delete节点:
1 [zkshell: 16] delete /zk_test2 [zkshell: 17] ls /3 [zookeeper]4 [zkshell: 18]
运行主从复制的Zookeeper
运行Zookeeper的独立模式方便评估、开发和测试。但是在生产中,你要运行Zookeeper的主从复制模式。相同应用中服务器主从复制组叫做 quorum , 并且在主从复制模式中,在quorum中的所有服务器有相同的配置文件副本。
注意:
对于主从模式,三台服务器是最小的要求,并强烈建议有基数个服务器。如果你只有两台服务器,其中的一个故障的时候,没有足够的机器形成多数quorum。在本质上两台服务比单台服务更不稳定,因为有两个单点。
配置文件和使用独立模式相似,但有一点点的区别,这是一个实例:
1 tickTime=20002 dataDir=/var/lib/zookeeper3 clientPort=21814 initLimit=55 syncLimit=26 server.1=zoo1:2888:38887 server.2=zoo2:2888:38888 server.3=zoo3:2888:3888
新的条目,initLimit 是Zookeeper用它来限定quorum中的Zookeeper服务器连接到Leader的超时时间。syncLimit限制了一个服务器从Leader多长时间超时。
使用这两种超时,你指定的时间单位使用tickTime.在这个例子中,initLimit的超时时间是5个标记号,2000毫秒一个标记,就是10秒。
条目server.x列出了构成Zookeeper服务的服务器。当服务启动时,它通过查找data目录中的myid文件知道是哪个服务。这个myid个文件包含了服务编号,用ASCII.
最后,注意每个服务器名称后面的两个端口号:"2888"和"3888"。服务器节点使用前面的端口连接到其他节点。这样的一个连接非常重要,以便于同事之间可以通讯,例如,对更新的顺序取得统一的意见。更具体的说,一个Zookeeper的服务器用这个端口连接follower到leader。当一个新的leader产生时,follower使用这个端口打开一个TCP连接,连接到leader。因为默认的leader选举也使用TCP。我们现在需要另一个端口用来leader选举。这是在服务器条目的第二个端口。
注意:如果你想在一台机器上测试多台服务器,在服务器配置文件为每个server.x指定servername为localhost,和独有的quorum & leader选举端口(也就是 2888:3888, 2889:3889, 2890:3890在上面的示例中)。当然分开dataDir和不同的clientPort也是非常重要的(在上面的主从复制示例中,在单个主机上运行,你仍然需要三个配置文件)。
- Zookeeper学习记录(二):使用以及配置
- Zookeeper配置以及学习
- 记录配置Hadoop+zookeeper+Hbase的完整过程(二)
- zookeeper使用(二)
- libsvm学习记录(二)libsvm的使用以及参数意义
- zookeeper学习记录-08 Zookeeper典型使用场景及实现
- Zookeeper 安装和配置---学习二
- Zookeeper安装以及配置说明(三)
- zookeeper配置以及安装
- zookeeper学习记录(转自 ITeye)
- zookeeper学习记录
- zookeeper学习记录
- zookeeper学习记录
- zookeeper学习记录
- zookeeper学习记录
- zookeeper学习记录
- zookeeper学习记录
- zookeeper学习记录
- 委托与事件
- 自定义View(四)之自定义ViewGroup实现手动、自动轮播图
- 【第十一课】异常---toString
- 程序员的英语之路
- 取list<Integer,String> list的key和value
- Zookeeper学习记录(二):使用以及配置
- NIO与BIO例子
- Android Studio在创建项目是一直处于building “project name”gradle project info的解决办法
- WEB会话跟踪
- PXC 部署前置检查
- centos7安装mysql用bunder
- 优化服务器性能要点
- PHP的错误和异常处理总结
- 粒子滤波器