package zktest;


import java.util.concurrent.CountDownLatch;


import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.ZooKeeper.States;
import org.apache.zookeeper.data.Stat;


public class Conf {
	public static void waitUntilConnected(ZooKeeper zooKeeper,
			CountDownLatch connectedLatch) {
		if (States.CONNECTING == zooKeeper.getState()) {
			try {
				connectedLatch.await();
			} catch (InterruptedException e) {
				throw new IllegalStateException(e);
			}
		}
	}


	static class ConnectedWatcher implements Watcher {


		private CountDownLatch connectedLatch;


		ConnectedWatcher(CountDownLatch connectedLatch) {
			this.connectedLatch = connectedLatch;
		}


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


	static public Conf Instance() {
		if (static_ == null) {
			static_ = new Conf();
		}
		return static_;
	}


	public boolean Init(String hostports, int times) {
		try {
			CountDownLatch connectedLatch = new CountDownLatch(1);
			Watcher watcher = new ConnectedWatcher(connectedLatch);
			zk = new ZooKeeper(hostports, times, watcher);
			System.out.println("zk:" + zk.toString());
			waitUntilConnected(zk, connectedLatch);
			System.out.println("safsa");
			System.out.println("safsa");


			// zk.create("/home/hadoop/testRootPath", "testRootData".getBytes(),
			// Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
			// zk.create("/home/hadoop/testRootPath/testChildPathOne",
			// "testChildDataOne".getBytes(), Ids.OPEN_ACL_UNSAFE,
			// CreateMode.PERSISTENT);
			// System.out.println(new
			// String(zk.getData("/home/hadoop/testRootPath", false,
			// null)));
			// System.out.println(zk.getChildren("/home/hadoop/testRootPath",
			// true));
			// zk.setData("/home/hadoop/testRootPath/testChildPathOne",
			// "modifyChildDataOne".getBytes(), -1);
			// System.out.println("dir node state:[" +
			// zk.exists("/home/hadoop/testRootPath", true)
			// + "]");
			// zk.create("/testRootPath/testChildPathTwo",
			// "testChildDataTwo".getBytes(), Ids.OPEN_ACL_UNSAFE,
			// CreateMode.PERSISTENT);
			// System.out.println(new String(zk.getData(
			// "/home/hadoop/testRootPath/testChildPathTwo", true, null)));
			// // zk.delete("/home/hadoop/testRootPath/testChildPathTwo", -1);
			// // zk.delete("/home/hadoop/testRootPath/testChildPathOne", -1);
			// // zk.delete("/home/hadoop/testRootPath", -1);
			// zk.close();
	
//			
			zk.create("/hu", ("hello1"+"\n"+"hello2").getBytes(),
					Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
			
			
//			zk.create("/testRootPath", "testRootData".getBytes(),
//					Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
//			// 创建一个子目录节点
//			zk.create("/testRootPath/testChildPathOne",
//					"testChildDataOne".getBytes(), Ids.OPEN_ACL_UNSAFE,
//					CreateMode.PERSISTENT);
			System.out.println(new String(zk.getData("/testRootPath", false,
					null)));
			// 取出子目录节点列表
			System.out.println(zk.getChildren("/testRootPath", true));
			// 修改子目录节点数据
			zk.setData("/testRootPath/testChildPathOne",
					"modifyChildDataOne".getBytes(), -1);
			System.out.println("目录节点状态:[" + zk.exists("/testRootPath", true)
					+ "]");
			// 创建另外一个子目录节点
//			zk.create("/testRootPath/testChildPathTwo",
//					"testChildDataTwo".getBytes(), Ids.OPEN_ACL_UNSAFE,
//					CreateMode.PERSISTENT);
			System.out.println(new String(zk.getData(
					"/testRootPath/testChildPathTwo", true, null)));
			// 删除子目录节点
//			zk.delete("/testRootPath/testChildPathTwo", -1);
//			zk.delete("/testRootPath/testChildPathOne", -1);
//			// 删除父目录节点
//			zk.delete("/testRootPath", -1);
			// 关闭连接
			zk.close();
		} catch (Exception e) {
			System.out.println(e);
			return false;
		}
		return true;
	}


	public String Get(String keys) {
		String re = "";
		String ppath = "/tmp/zookeeper";
		int oldpos = -1;
		int pos = 0;
		while (true) {
			pos = keys.indexOf(".", oldpos + 1);
			if (pos < 0) {
				ppath += "/";
				String str = keys.substring(oldpos + 1);
				ppath += str;
				break;
			}
			ppath += "/";
			String str = keys.substring(oldpos + 1, pos);
			ppath += str;
			oldpos = pos;
		}
		Stat stat = new Stat();
		try {
			System.out.println("asfsa:" + ppath);
			byte[] b = zk.getData(ppath, false, stat); // 获取节点的信息及存储的数据
			re = new String(b);
		} catch (Exception e) {
			System.out.println(e);
		}
		return re;
	}


	private Conf() {


	}


	private ZooKeeper zk;
	static private Conf static_;


	public static void main(String args[]) {
		// String hostports =
		// "192.168.1.88:2181,192.168.1.88:2182,192.168.1.88:2183";
		String hostports = "127.0.0.1:2181";
		Conf.Instance().Init(hostports, 1000);


		// String str =
		// Conf.Instance().Get("conf.logicpoint.subscriberserverip");
		// str = Conf.Instance().Get("conf.logicpoint.subscriberserverport");
		// System.out.println(str);
		while (true) {
			try {
				Thread.sleep(100);
			} catch (Exception e) {


			}
		}


	}
}

命令:

[hadoop@hutx bin]$ ./zookeeper-shell.sh  127.0.0.1:2181
Connecting to 127.0.0.1:2181
Welcome to ZooKeeper!
JLine support is disabled

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
ls /
[testRootPath, zookeeper]
 create /zk "test"
ZooKeeper -server host:port cmd args
        connect host:port
        get path [watch]
        ls path [watch]
        set path data [version]
        delquota [-n|-b] path
        quit 
        printwatches on|off
        create [-s] [-e] path data acl
        stat path [watch]
        close 
        ls2 path [watch]
        history 
        listquota path
        setAcl path acl
        getAcl path
        sync path
        redo cmdno
        addauth scheme auth
        delete path [version]
        setquota -n|-b val path
ls /
[testRootPath, zookeeper]
create /zk
ZooKeeper -server host:port cmd args
        connect host:port
        get path [watch]
        ls path [watch]
        set path data [version]
        delquota [-n|-b] path
        quit 
        printwatches on|off
        create [-s] [-e] path data acl
        stat path [watch]
        close 
        ls2 path [watch]
        history 
        listquota path
        setAcl path acl
        getAcl path
        sync path
        redo cmdno
        addauth scheme auth
        delete path [version]
        setquota -n|-b val path
ls /zookeeper
[quota]
ls2 /        
[testRootPath, zookeeper]
cZxid = 0x0
ctime = Wed Dec 31 16:00:00 PST 1969
mZxid = 0x0
mtime = Wed Dec 31 16:00:00 PST 1969
pZxid = 0x1a
cversion = 3
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 2
 create /zk myData                                
ZooKeeper -server host:port cmd args
        connect host:port
        get path [watch]
        ls path [watch]
        set path data [version]
        delquota [-n|-b] path
        quit 
        printwatches on|off
        create [-s] [-e] path data acl
        stat path [watch]
        close 
        ls2 path [watch]
        history 
        listquota path
        setAcl path acl
        getAcl path
        sync path
        redo cmdno
        addauth scheme auth
        delete path [version]
        setquota -n|-b val path
create /zk my
Created /zk
ls /
[testRootPath, zk, zookeeper]
ls /zk
[]
ls /testRootPath
[testChildPathTwo, testChildPathOne]
create /zkk "abc" 
Created /zkk
ls /zkk
[]
get /zkk
"abc"
cZxid = 0x27
ctime = Thu Jul 31 07:55:17 PDT 2014
mZxid = 0x27
mtime = Thu Jul 31 07:55:17 PDT 2014
pZxid = 0x27
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
get /zk
my
cZxid = 0x23
ctime = Thu Jul 31 07:53:15 PDT 2014
mZxid = 0x23
mtime = Thu Jul 31 07:53:15 PDT 2014
pZxid = 0x23
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 2
numChildren = 0
set /zk ccc
cZxid = 0x23
ctime = Thu Jul 31 07:53:15 PDT 2014
mZxid = 0x28
mtime = Thu Jul 31 08:01:00 PDT 2014
pZxid = 0x23
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
get /zk
ccc
cZxid = 0x23
ctime = Thu Jul 31 07:53:15 PDT 2014
mZxid = 0x28
mtime = Thu Jul 31 08:01:00 PDT 2014
pZxid = 0x23
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
ls  
ZooKeeper -server host:port cmd args
        connect host:port
        get path [watch]
        ls path [watch]
        set path data [version]
        delquota [-n|-b] path
        quit 
        printwatches on|off
        create [-s] [-e] path data acl
        stat path [watch]
        close 
        ls2 path [watch]
        history 
        listquota path
        setAcl path acl
        getAcl path
        sync path
        redo cmdno
        addauth scheme auth
        delete path [version]
        setquota -n|-b val path
ls /
[testRootPath, zk, zkk, zookeeper]
get /testRootPath
testRootData
cZxid = 0x1a
ctime = Thu Jul 31 07:20:57 PDT 2014
mZxid = 0x1a
mtime = Thu Jul 31 07:20:57 PDT 2014
pZxid = 0x1d
cversion = 2
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 12
numChildren = 2
get /hu
hello1
hello2
cZxid = 0x2a
ctime = Thu Jul 31 08:07:35 PDT 2014
mZxid = 0x2a
mtime = Thu Jul 31 08:07:35 PDT 2014
pZxid = 0x2a
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 13
numChildren = 0


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐