`
Tristan_S
  • 浏览: 361497 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

zookeeper 学习

 
阅读更多
zookeeper 是用来管理HMaster和RegionServer的, 和datanode复制没有关系


---------------
核心是watch, 用来监听其他服务器中节点的变化情况

节点znode, 可以分为永久节点和临时节点
永久节点存放需要同步管理的数据
临时节点作为心跳测试,和session的生命周期一致, 所有节点都能知道其他节点的状态。
还用来作为选举master,sequence最小的一个。


watch事件触发
为读操作设置watch: exists getChildren  getData
watch种类分为:  data watch 和 child watch
setData 触发data watch
create  delete 触发 data watch 和 child watch


watch只能生效一次
如果要一直监控一个值得话,需要使用StatCallback

package alwaysWatch;

import org.apache.zookeeper.AsyncCallback.StatCallback;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat;

public class Main implements Watcher, StatCallback {
	String znode = "/e";
	ZooKeeper zk;

	public Main() throws Exception {
		zk = new ZooKeeper("192.168.1.107:2181", 30000, this);
		zk.exists(znode, true);
		Thread.sleep(Long.MAX_VALUE);
	}
	public static void main(String[] args) throws Exception {
		new Main();
	}

	@Override
	public void process(WatchedEvent event) {
		zk.exists(znode, true, this, null);
	}
	
	@Override
	public void processResult(int rc, String path, Object ctx, Stat stat) {
		try {
			byte b[] = zk.getData(znode, false, null);
			System.out.println(new String(b, "UTF-8"));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}
	
}




参考
http://www.cnblogs.com/zhangchaoyang/articles/2536178.html
http://www.blogjava.net/BucketLi/archive/2010/12/21/341268.html

多个server互相监控
http://blog.163.com/wm_at163/blog/static/132173490201232675256528/
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics