zookeeper3.3.3初探【安装+APIs创建一个znode】
来源:互联网 发布:linux下安装配置jdk 编辑:程序博客网 时间:2024/04/30 02:26
zookeeper安装很简单
1、下载http://mirror.bit.edu.cn/apache/zookeeper/
2、解压tar -xzvf zookeeper-3.3.5.tar.gz
3、vim ~/.bashrc中添加环境变量
export ZOOKEEPER_HOME=/home/ckl/hadoop-0.20.2/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME
4、修改zookeeper/conf/下的zoo.cfg(这个文件由zoo_sample.cfg重命名而来)
tickTime=5000
dataDir=/home/ckl/hadoop-0.20.2/zookeeper/data
clientPort=2181
5、重启终端,执行zk_Server.sh start
6、成功启动后执行zkCli.sh
7、下面利用eclipse新建一个工程zkTest,导入zookeeper下的jarAPI包,新建一个class ConnectionWatcher 用于连接zookeeper
import java.io.IOException;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.KeeperException;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.Watcher.Event.KeeperState;import org.apache.zookeeper.ZooDefs.Ids;public class ConnectionWatcher implements Watcher{private static final int SESSION_TIMEOUT=5000;public ZooKeeper zk; public CountDownLatch connectedSignal=new CountDownLatch(1);//需要等待1public void connect(String hosts)throws IOException,InterruptedException{zk=new ZooKeeper(hosts,SESSION_TIMEOUT,this);connectedSignal.await();//在使用zookeeper对象前,等待连接建立。这里利用Java的CountDownLatch类//(java.util.concurrent.CountDownLatch)来阻塞,直到zookeeper实例准备好。}public void close()throws InterruptedException{zk.close();}public void create(String groupName)throws KeeperException,InterruptedException{String path="/"+groupName;String createdPath=zk.create(path, null, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);System.out.println("Created"+createdPath);}@Overridepublic void process(WatchedEvent event) {if(event.getState()==KeeperState.SyncConnected){//在收到连接事件KeeperState.SyncConnected时,connectedSignal被创建时,计数为1,代表需要在 //释放所有等待线程前发生事件的数量。在调用一次countDown()方法后,此计数器会归零,await操作返回。connectedSignal.countDown();}}//public static void main(String[]args)throws Exception{//ConnectionWatcher cg=new ConnectionWatcher();//cg.connect(args[0]);//cg.create(args[1]);//cg.close();//}}
8、继承上述类,实现创建znode,加入group,列出group的成员
import java.util.List;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.KeeperException;import org.apache.zookeeper.ZooDefs.Ids;public class ZnodesManage extends ConnectionWatcher{/** * 创建znode */public void create(String groupName)throws KeeperException,InterruptedException{String path="/"+groupName;String createdPath=zk.create(path, null, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);System.out.println("Created "+createdPath);}/** * 创建子znode */public void join(String groupName,String memberName)throws KeeperException,InterruptedException{String path="/"+groupName+"/"+memberName;//类似于创建子目录String createPath=zk.create(path, null,Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);//永久znode,若为EPHEMERAL则当前会话结束(程序运行完)会create的znode也会删除System.out.println("Created "+createPath);}public void list(String groupName)throws KeeperException,InterruptedException{String path="/"+groupName;try{List<String>children=zk.getChildren(path, false);//获取子znode列表System.out.println(children.size());if(children.isEmpty()){System.out.printf("%s中没有子znode\n",groupName);System.exit(1);}for(String child : children){System.out.println(child);}}catch (KeeperException.NoNodeException e) {// TODO: handle exceptionSystem.out.printf("%s znode不存在",groupName);System.exit(1);}}public static void main(String[]args)throws Exception{ZnodesManage cg=new ZnodesManage();cg.connect("localhost");cg.create("zoo");//创建一个znodecg.join("zoo","duck");//创建三个子znodecg.join("zoo","goat");cg.join("zoo","cow");cg.list("zoo");//列出zoo下的znodecg.close();//关闭连接}}
- zookeeper3.3.3初探【安装+APIs创建一个znode】
- 利用ZooKeeper的Java API来创建一个znode
- znode节点创建
- Zookeeper3.4.5配置安装
- zookeeper3.4.5安装笔记
- zookeeper3.4.6的安装
- zookeeper3.4.6集群安装
- Zookeeper3.4.6的安装
- Zookeeper3.4.6的安装
- Zookeeper3.4.9安装
- Zookeeper3.4.6的安装
- CentOS7安装zookeeper3.5.2
- Centos7安装zookeeper3.3.6
- express4创建ReSTful APIs
- Zookeeper3.4.6安装配置文档
- CentOS7安装ZooKeeper(ZooKeeper3.3)
- CentOS6.5 安装ZooKeeper3.4.10
- centos7安装zookeeper3.4.9集群
- shell命令总结
- .Net 脚本设置Excel的条件格式
- 统计整数二进制表示中1的个数
- C#反射加壳
- JS贪食蛇...
- zookeeper3.3.3初探【安装+APIs创建一个znode】
- HTML+CSS的书写格式
- 项目就会报 java.lang.NoClassDefFoundError
- Windows Installer 4.5 UI Enhancements: Embedded UI
- 生成四位随机数,数字不重复
- Linux内存管理
- 高手详解SQL性能优化十条经验
- ant classpath导致的问题
- linux的物理内存空间与线性地址空间的的对应关系