zookeeper集群安装与配置

转自: http://my.oschina.net/u/2377453/blog/464739

1、解压zookeeper

    2、在$ZOOKEEPER_HOME/conf下创建zoo.cfg文件(参考配置文件:zoo_sample.cfg),内容为:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# CS通信心跳时间,Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位
tickTime= 2000
 
# LF初始化通信时限,集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)
initLimit= 10
 
# LF同步通信时限,集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
syncLimit= 5
 
#数据文件目录,Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
dataDir=/root/app/zookeeper/data
 
#客户端连接端口,客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort= 2181
 
#服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
#这个配置项的书写格式比较特殊,规则如下:
#server.N=YYY:A:B 
server. 1 =hadoop.master: 2888 : 3888
server. 2 =hadoop.slave: 2888 : 3888
#端口
# 2181 :用于客户端的连接
# 2888 :follower与leader通信
# 3888 :leader选举端口

    3、根据zoo.cfg在dataDir配置的路径下创建myid文件,且输入server.N的N内容(例如:当前机器是server.1,那么在    myid中输入1)

    4、复制配置完毕的zookeepr到其他节点

?
1
scp -r $ZOOKEEPER_HOME root @hostname :/home

    5、复制完毕之后记得修改myid

    6、在各个节点上分别启动脚本:

?
1
$ZOOKEEPER_HOME/bin/zkServer.sh start

    7、检查命令

?
1
2
3
4
7.1 、#zkServer.sh status
//如果出现Error contacting service. It is probably not running.错误,是因为节点只启动了一个,无法启动集群模式
7.2 、#echo ruok | nc localhost  2181
//如果命令成功会返回imok(I'm ok)

    8、zk客户端

?
1
2
3
4
5
6
7
8
9
10
$ZOOKEEPER_HOME/bin/zkCli.sh -server hostname: 2181
//启动一个zk客户端
//最终要记住一个help命令即可掌握其他命令的用法
(操作之前需要了解类似文件系统的znode,
     简单描述:zk中所有节点都是znode节点,znode节点不仅可以作为目录还可以存储数据.)
CREATE 创建znode
SET 设置znode的数据
GET 查询znode
RMR 删除znode
...等等自行查询

    9、Java客户端

    相关代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import  org.apache.zookeeper.CreateMode;
import  org.apache.zookeeper.WatchedEvent;
import  org.apache.zookeeper.Watcher;
import  org.apache.zookeeper.ZooDefs.Ids;
import  org.apache.zookeeper.ZooKeeper;
public  class  ZKClient {
     // 连接地址
     private  final  static  String CONN =  "192.168.1.200:2181" ;
     // client与zk超时时间(unit:ms)
     private  final  static  int  SESSION_TIMEOUT =  5000 ;
 
     public  static  void  main(String[] args)  throws  Exception {
 
         //1、持久节点:创建的节点成功时,节点便会持久化在zk上
         //2、临时节点:创建节点过程中一旦发生有意或无意的客户端超时或者关闭,节点都被删除
         ZooKeeper zk =  new  ZooKeeper(CONN, SESSION_TIMEOUT,  new  Watcher() {
             @Override
             public  void  process(WatchedEvent event) {
                 //接收zk各个时间通知
                 System.out.println( "------------------------" );
                 System.out.println( "Path:" +event.getPath());
                 System.out.println( "type:" +event.getType());
                 System.out.println( "state" +event.getState());
                 System.out.println( "wrapper:" +event.getWrapper());
                 System.out.println( "------------------------" );
             }
         });
         String path =  "/hello" ;
         byte [] data =  "testhello!" .getBytes();
         zk.create(path,data, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
         zk.close();
     }
}

转载于:https://www.cnblogs.com/qicheng/p/4680222.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值