hadoop下zookeeper的安装与配置&Java API操作zookeeper

hadoop下zookeeper的安装与配置

1、ZK下载

http://archive.cloudera.com/cdh5/cdh/5/zookeeper-3.4.5-cdh5.7.0.tar.gz

2、解压ZK

[hadoop@hadoop000 software]$ tar zxvf zookeeper-3.4.5-cdh5.7.0.tar.gz -C ../app/ 
[hadoop@hadoop000 software]$ cd ../app/zookeeper-3.4.5-cdh5.7.0/

3、ZK主要目录

(1)ZK的启动脚本目录

[hadoop@hadoop000 zookeeper-3.4.5-cdh5.7.0]$ cd bin
[hadoop@hadoop000 bin]$ ls
README.txt zkCli.cmd zkEnv.cmd zkServer.cmd zkServer.sh
 zkCleanup.sh zkCli.sh zkEnv.sh zkServer-initialize.sh 
[hadoop@hadoop000 bin]$ rm -rf *.cmd

(2)ZK配置文件存放位置

[hadoop@hadoop000 bin]$ cd ../conf 
[hadoop@hadoop000 conf]$ ls
configuration.xsl log4j.properties zoo_sample.cfg

4、ZK配置
https://zookeeper.apache.org/doc/current/zookeeperStarted.html#sc_InstallingSingleMode

(1)在conf目录下创建配置文件zoo.cfg

[hadoop@hadoop000 conf]$ ls
configuration.xsl log4j.properties zoo_sample.cfg 
[hadoop@hadoop000 conf]$ cp zoo_sample.cfg zoo.cfg 
[hadoop@hadoop000 conf]$ vim zoo.cfg
# ZooKeeper使用的基本时间单位(毫秒)。它用于做心跳,并且最小会话超时是tickTime的两倍。 tickTime=2000
# 初始化连接数
initLimit=10
# 同时连接数
syncLimit=5
# 存储内存数据库快照的位置 
dataDir=/tmp/zookeeper
# 用于监听客户端连接的端口 
clientPort=2181

(2)修改数据存储目录

[hadoop@hadoop000 conf]$ mkdir /home/hadoop/app/tmp/zookeeper 
[hadoop@hadoop000 conf]$ vim zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
# 指定为新创建的zookeeper目录
dataDir=/home/hadoop/app/tmp/zookeeper 
clientPort=2181

(3)配置ZK的环境变量

[hadoop@hadoop000 conf]$ vim ~/.bash_profile
# 省略部分内容
# 添加ZK的环境变量 
ZK_HOME=/home/hadoop/app/zookeeper-3.4.5-cdh5.7.0 
export PATH=$PATH:$ZK_HOME/bin
export PATH
[hadoop@hadoop000 conf]$ source ~/.bash_profile 
[hadoop@hadoop000 conf]$ echo $ZK_HOME
/home/hadoop/app/zookeeper-3.4.5-cdh5.7.0

(4)启停ZK

#启动zk
[hadoop@hadoop000 conf]$ zkServer.sh start
JMX enabled by default
Using config: /home/hadoop/app/zookeeper-3.4.5-cdh5.7.0/bin/../conf/zoo.cfg 
Starting zookeeper ... STARTED
[hadoop@hadoop000 conf]$ jps
64384 Jps
63362 QuorumPeerMain
#停止zk
[hadoop@hadoop000 conf]$ zkServer.sh stop
JMX enabled by default
Using config: /home/hadoop/app/zookeeper-3.4.5-cdh5.7.0/bin/../conf/zoo.cfg 
Stopping zookeeper ... STOPPED
[hadoop@hadoop000 conf]$ jps
64426 Jps

ZK客户端 https://zookeeper.apache.org/doc/current/zookeeperStarted.html#sc_InstallingSingleMode
1、启动ZK客户端

[hadoop@hadoop000 conf]$ zkCli.sh
Connecting to localhost:2181
2020-08-18 22:25:49,221 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper .version=3.4.5-cdh5.7.0--1, built on
# 省略部分输出
WatchedEvent state:SyncConnected type:None path:null 
[zk: localhost:2181(CONNECTED) 0]

2、查看help信息

[zk: localhost:2181(CONNECTED) 0] help


3、查看数据

[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]

4、创建数据并查看

[zk: localhost:2181(CONNECTED) 2] create /node test
Created /node
[zk: localhost:2181(CONNECTED) 3] ls /
[node, zookeeper]
[zk: localhost:2181(CONNECTED) 4] get /node
test
cZxid = 0x2
ctime = Tue Aug 18 22:28:55 CST 2020
mZxid = 0x2
mtime = Tue Aug 18 22:28:55 CST 2020
pZxid = 0x2
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
[zk: localhost:2181(CONNECTED) 5]

5、修改数据并查看

[zk: localhost:2181(CONNECTED) 5] set /node test1
cZxid = 0x2
ctime = Tue Aug 18 22:28:55 CST 2020
mZxid = 0x3
mtime = Tue Aug 18 22:30:37 CST 2020
pZxid = 0x2
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0

[zk: localhost:2181(CONNECTED) 6] get /node
test1
cZxid = 0x2
ctime = Tue Aug 18 22:28:55 CST 2020
mZxid = 0x3
mtime = Tue Aug 18 22:30:37 CST 2020
pZxid = 0x2
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0

6、删除数据并检查

[zk: localhost:2181(CONNECTED) 7] delete /node 
[zk: localhost:2181(CONNECTED) 8] ls /node 
Node does not exist: /node 
#----------------或者----------------
[zk: localhost:2181(CONNECTED) 15] rmr /node
[zk: localhost:2181(CONNECTED) 16] get /node
Node does not exist: /node

Java API操作zookeeper

1、pom中添加ZK的依赖

<properties> 
	<zk.version>3.4.5-cdh5.7.0</zk.version>
</properties>
<dependencies>
  <dependency>
	<groupId>org.apache.zookeeper</groupId> 	
	<artifactId>zookeeper</artifactId>
	<version>${zk.version}</version>
  </dependency>
  <dependency>
	<groupId>junit</groupId> 
	<artifactId>junit</artifactId> 		
	<version>4.12</version>
  </dependency>
</dependencies>

**2、单元测试ZK **

package com.kgc.HbaseEG;

import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

 /**
  * 准备工作
  */
public class TestZK {
    //zk
    private ZooKeeper zooKeeper;
    //超时时间
    private static final int SESSION_OUT = 30000; //watcher
    private Watcher watcher = new Watcher() {
        @Override
        public void process(WatchedEvent watchedEvent) {
            System.out.println("process:" + watchedEvent.getType());
        }
    };

    @Before
    public void setUp() throws Exception {
        zooKeeper = new ZooKeeper("hadoop:2181", SESSION_OUT, watcher);
    }

    @After
    public void tearDown() throws Exception {
        zooKeeper.close();
    }

    /**
     * 创建节点
     *
     * @throws Exception
     */
    @Test
    public void createNode() throws Exception {
        zooKeeper.create("/node",
                "test".getBytes(),
                ZooDefs.Ids.OPEN_ACL_UNSAFE,
                CreateMode.PERSISTENT);
    }

    /**
     * 查看节点
     *
     * @throws Exception
     */
    @Test
    public void getNode() throws Exception {
        byte[] data = zooKeeper.getData("/node", null, null);
        System.out.println(new String(data));
    }

    /**
     * 修改节点
     *
     * @throws Exception
     */
    @Test
    public void setNodeData() throws Exception {
        zooKeeper.setData("/node", "accp".getBytes(), -1);
    }

    /**
     * 判断节点是否存在
     *
     * @throws Exception
     */
    @Test
    public void existsNode() throws Exception {
        Stat stat = zooKeeper.exists("/node", null);
        if (stat == null) {
            System.out.println("节点不存在!");
        } else {
            System.out.println(stat.getCzxid() + "\t" + stat.getCtime());
        }
    }

    /**
     * 删除节点
     *
     * @throws Exception
     */
    @Test
    public void deleterNode() throws Exception {
        zooKeeper.delete("/node", -1);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值