`
futeng
  • 浏览: 263721 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Zookeeper入门 - Hello World.md

阅读更多

 

 

示例将以单击模式最简化安装Zookeeper,并分别以ZK客户端和Java API编写 HelloWorld程序。

 

下载

当前最新: zookeeper-3.4.6.tar.gz
官网下载
我的备份

 

 

安装

 

tar zxvf zookeeper-3.4.6.tar.gz
cd zookeeper-3.4.6/
#zookeeper无需编译,直接解压就可使用
 

 

配置

 

#修改示例配置文件为指定的zoo.cfg
cd conf
cp zoo_sample.cfg zoo.cfg
#编辑zoo.cfg添加下行参数。其他参数稍后再配,本次只需要指定该zookeeper数据文件存放位置即可
dataDir=/var/tmp/zkdata

#创建该数据文件存放目录
mkdir -p /var/tmp/zkdata

#新建myid标识文件(集群模式中各个zk的身份证,先配着混个脸熟。)
cd /var/tmp/zkdata/
echo '1' > myid
 

 

启动

 

#回到zookeeper安装目录/bin 下,执行开启命令
 ./zkServer.sh start
#显示如下信息,表示开启正常
JMX enabled by default
Using config: /home/storm/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
 

 

检测

 

#Zookeeper维护通常为4个字母组成的常用命令,很酷炫的样子。
#本例使用ruok(Are you OK?)命令检测开启是否成功
echo ruok | nc localhost 2181
#正常情况下会返回 'imok' = I'm OK.
 

 

客户端

 

#使用zkCli.sh客户端(bin目录下)编写Helloworld
./zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
#注意开启zkCli.sh客户端后敲进去的命令是 ls /,因为根目录没有节点,所有返回为空
 
    命令简介:

[zk: localhost:2181(CONNECTED) 0] 即为客户端命令行,输入help可获取具体的命令解释。先预览下面三个简单命令:
1. ls path [watch] :同linux列出内容
2. get path [watch] : 获取znode值
3. set path data [version] : 设置znode值
4. create [-s] [-e] path data acl :

    使用示例:

 

[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 2] create /mypath helloword
Created /mypath
[zk: localhost:2181(CONNECTED) 3] ls /
[mypath, zookeeper, futeng]
[zk: localhost:2181(CONNECTED) 4] get /mypath
helloword
cZxid = 0x4b
ctime = Wed May 21 00:19:07 CST 2014
mZxid = 0x4b
mtime = Wed May 21 00:19:07 CST 2014
pZxid = 0x4b
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 0
[zk: localhost:2181(CONNECTED) 5]

     仔细看 helloworld 在哪 :)

 

 

使用Java API 编写Helloworld

    普通Java工程引入zookeeper-3.4.6.jar包即可。
    Maven工程可添加如下依赖:

 

<dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
</dependency>

     创建连接Zookeeper类(该类代码摘自来自《Hadoop权威指南》)

 

 

import java.io.IOException;
import java.util.concurrent.CountDownLatch;

import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.Watcher.Event.KeeperState;

public class ConnectionWatcher implements Watcher {
    private CountDownLatch connectedSignal = new CountDownLatch(1);

    private static final int SESSION_TIMEOUT = 5000;

    ZooKeeper zk;

    public void connect(String hosts) throws InterruptedException, IOException {
        zk = new ZooKeeper(hosts, SESSION_TIMEOUT, this);
        connectedSignal.await();
    }

    @Override
    public void process(WatchedEvent event) {
        if(event.getState() == KeeperState.SyncConnected) {
            connectedSignal.countDown();
        }
    }

    public void close() throws InterruptedException {
        zk.close();
    }
}

 

 

 

     创建新建节点和获取节点值类

 

import java.io.IOException;
import java.util.concurrent.TimeUnit;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.ZooDefs.Ids;

/**
* @author <a href="mailto:ifuteng@gmail.com">futeng</a>
*/

public class HelloZookeeper extends ConnectionWatcher{

    public void createNode(String nodeName, String nodeValue)
                                         throws KeeperException, InterruptedException {

        String path = "/" + nodeName;

        String createPath = zk.create(path, nodeValue.getBytes(),
                                Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);

        System.out.println("Created znode:"+createPath);
    }

    public void getValue(String nodeName) throws KeeperException, InterruptedException {

        String path = "/" + nodeName;

        byte[] value = zk.getData(path, false, null);

        System.out.printf("[%s,%s]", path, new String(value));
    }

    public static void main(String[] args) throws Exception, IOException {
        // 1 - Connect
        JoinGroup joinGroup = new JoinGroup();
        joinGroup.connect("192.168.80.219");

        // 2 - Created node
        joinGroup.createNode("hello", "world");

        // 3- Get value
        joinGroup.getValue("hello");

        TimeUnit.HOURS.sleep(1);
    }
}

 

 

    执行显示如下

 

Created znode:/hello
[/hello,world]

 

 

    另外官网的zookeeper示例代码也很赞,已经附在文后。

 

     version1.0 first created 2014-05-20

     version2.0 删除无用shell显示,精简排版 2014-06-04

 

                                                                                                               转载请标明作者和原文链接

 

                                                                                                               ifuteng#gmail.com 2014/5/20

2
0
分享到:
评论

相关推荐

    apache-zookeeper(apache-zookeeper-3.7.1-bin.tar.gz)

    apache-zookeeper分布式框架,压缩包内容:(apache-zookeeper-3.7.1-bin.tar.gz、apache-zookeeper-3.7.1.tar.gz、apache-zookeeper-3.6.4-bin.tar.gz、apache-zookeeper-3.6.4.tar.gz、apache-zookeeper-3.5.10-...

    apache-zookeeper-3.7.0-bin.tar.gz

    apache-zookeeper-3.7.0-bin.tar.gz

    apache-zookeeper-3.7.1-bin.tar.gz

    apache-zookeeper-3.7.1-bin.tar.gz 内容概要:通过带着读者手写简化版Spring框架,了解Spring核心原理。在手写Spring源码的过程中会摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:IOC, AOP、 Bean...

    apache-zookeeper-3.5.8-bin.tar.gz

    解压压缩包的命令通常为`tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz`,这会在当前目录下创建一个名为"apache-zookeeper-3.5.8-bin"的文件夹。 Zookeeper的核心概念包括: 1. **节点(ZNode)**:Zookeeper的...

    apache-zookeeper-3.6.1-bin.tar.gz

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性...window下先解压为apache-zookeeper-3.6.1-bin.tar.gz

    apache-zookeeper-3.5.7-bin.tar.gz

    这个压缩包"apache-zookeeper-3.5.7-bin.tar.gz"是Zookeeper的可执行二进制文件包,用于在Linux或Unix类操作系统上部署和运行Zookeeper服务器。 **Zookeeper的基本概念:** 1. **节点(ZNode)**:Zookeeper的数据...

    最新版linux apache-zookeeper-3.7.0-bin.tar.gz

    - 解压`apache-zookeeper-3.7.0-bin.tar.gz`到你选择的目录,例如 `/opt`. - 配置`conf/zoo.cfg`,设置数据目录(dataDir)和日志目录(dataLogDir),并根据需求调整其他配置。 - 初始化数据目录,创建myid文件...

    apache-zookeeper-3.5.10-bin.tar.gz

    在"apache-zookeeper-3.5.10-bin.tar.gz"这个压缩包中,包含了ZooKeeper 3.5.10版本的二进制文件,适用于Linux环境的部署。在"Linux sed部署Zooker集群"的描述中,sed可能是笔误,通常我们会用配置文件管理和命令行...

    zookeeper-3.4.5-cdh5.16.2.tar.gz

    《Zookeeper-3.4.5-cdh5.16.2:分布式协调服务的核心解析》 Apache ZooKeeper,一个高度可靠的分布式协调系统,是大数据生态中的重要组件。本资源包"zookeeper-3.4.5-cdh5.16.2.tar.gz"包含了Zookeeper的3.4.5版本...

    zookeeper-3.4.5-cdh5.15.1.tar.gz

    1. **下载与解压**:首先,你需要从官方或镜像站点下载Zookeeper的tar.gz压缩包,即"zookeeper-3.4.5-cdh5.15.1.tar.gz"。下载完成后,使用`tar -zxvf zookeeper-3.4.5-cdh5.15.1.tar.gz`命令进行解压。 2. **配置...

    最新版windows apache-zookeeper-3.5.7-bin.tar.gz

    标题中的"最新版windows apache-zookeeper-3.5.7-bin.tar.gz"意味着这是一个专为Windows操作系统设计的Apache ZooKeeper 3.5.7版本的二进制发行包。这个版本可能包含了对Windows平台的优化和支持,方便在Windows环境...

    zookeeper-3.4.10.tar.gz

    2. 修改配置文件:在`zookeeper-3.4.10/conf`目录下,有一个名为`zoo_sample.cfg`的示例配置文件,复制并重命名为`zoo.cfg`,这是ZooKeeper的主要配置文件。 3. 配置`zoo.cfg`: - `dataDir`:设置ZooKeeper的数据...

    hadoop-2.7.7.tar.gz+zookeeper-3.4.14.tar.gz.zip

    hadoop-2.7.7.tar.gz+zookeeper-3.4.14.tar.gz.zip,配置hadoop+zookeeper必须,版本已适配。 hbase下载链接:https://download.csdn.net/download/tracelessle/11797862; sqoop + jdk + mysql-connector-java下载...

    apache-zookeeper-3.5.9-bin.tar.gz

    在"apache-zookeeper-3.5.9-bin.tar.gz"这个压缩包中,包含了Zookeeper 3.5.9版本的二进制发行版,用于在各种操作系统上部署和运行Zookeeper服务。 1. **Zookeeper基本概念** - **Znode**: Zookeeper中的数据存储...

    apache-zookeeper-3.6.3-bin.zip

    打开“系统属性” -&gt; “高级” -&gt; “环境变量”,在“系统变量”部分新建一个变量,变量名为"ZOOKEEPER_HOME",变量值设置为Zookeeper解压后的路径,即"C:\Zookeeper\apache-zookeeper-3.6.3-bin"。 然后,在系统...

    apache-zookeeper-3.8.4-bin.tar

    1. 解压`apache-zookeeper-3.8.4-bin.tar`到指定目录。 2. 配置`conf/zoo.cfg`,设置服务器ID、数据存储路径、集群配置等。 3. 启动Zookeeper服务,使用`bin/zkServer.sh start`命令。 4. 使用`bin/zkCli.sh`命令行...

    apache-zookeeper-3.5.5.tar.gz

    标题中的"apache-zookeeper-3.5.5.tar.gz"表明这是一个Apache ZooKeeper的版本3.5.5的归档文件,采用的是tar.gz格式,这是一种常见的Linux/Unix下的压缩方式,用于打包并压缩文件,便于下载和传输。 描述中提到...

    apache-zookeeper-3.5.8.tar.gz-Delete

    - 解压`apache-zookeeper-3.5.8.tar.gz`到指定目录。 - 配置`conf/zoo.cfg`,包括设置数据目录、集群配置等。 - 初始化数据目录,运行`bin/zkServer.sh start-foreground`启动ZooKeeper服务。 6. **Zookeeper在...

    zookeeper-3.4.5-cdh5.10.0.tar.gz

    在这个"zookeeper-3.4.5-cdh5.10.0.tar.gz"压缩包中,我们得到了一个针对CDH (Cloudera Distribution Including Apache Hadoop) 5.10.0版本定制的Zookeeper 3.4.5实现。这个工具包对于Hadoop的高可用性和热备管理至...

    zookeeper-3.4.13.tar.gz 下载(5积分)

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是以Fast Paxos算法为基础,实现同步服务,配置维护和命名服务等分布式应用。而使用kafka前必须安装zookeeper。...(文件全称:zookeeper-3.4.13.tar.gz)

Global site tag (gtag.js) - Google Analytics