Zookeeper
来源:互联网 发布:seo零基础 编辑:程序博客网 时间:2024/06/06 10:36
ZooKeeper概述
1. 是一个为用户的分布式应用程序提供协调的服务,是为别的分布式程序服务的.
集群管理:
- 在分布式集群中,各个节点的实时状态统计 将节点信息写入到ZooKeeper的一个znode上,监听这个znode可以获取它的实时状态变化 Hbase中Master状态监控和选举
Hadoop中使用到了ZooKeeper的框架大概有:
1. HBase 2. Spark 3. HDFS HA 4. 还有很多。。。
znode有两种类型:
- 短暂的:ephemeral - 持久的:persistent - **znode的类型在创建时确定后就不能修改**
ZooKeeper架构
Zookeeper核心
1. 仲裁机制 2. 目录式数据结构
下载安装包: http://archive.cloudera.com/cdh5/cdh/5/
zoo.cfg配置:
- dataDir
启停ZK Server:
- zkServer.sh start - zkServer.sh stop
启动客户端:
- zkCli.sh
常用命令:
- ls
- create
- get
set
delete
quit
……
实现服务器与客户端互联:
public class TestZK2 { private ZooKeeper zooKeeper; private String path="/dui"; private Watcher watcher=new Watcher() { @Override public void process(WatchedEvent watcherEvent) { if(watcherEvent.getType()==Event.EventType.NodeDeleted){ System.out.println("节点被删除了"); try { createNode(); } catch (KeeperException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } } }; private void createNode() throws KeeperException, InterruptedException { org.apache.zookeeper.data.Stat stat=zooKeeper.exists(path,true); if(stat == null){ System.out.println("创建节点"); zooKeeper.create(path,"test".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT); System.out.println("节点创建成功"); zooKeeper.exists(path,true); Thread.sleep(1000); }else{ System.out.println("节点存在"); } } @Before public void kaishi() throws IOException { zooKeeper = new ZooKeeper("hadoop-node4", 30000, watcher);} @After public void guanbi() throws InterruptedException { zooKeeper.close(); } @Test public void run() throws IOException, KeeperException, InterruptedException { createNode(); System.in.read(); }}
public class TestZK3 { private ZooKeeper zooKeeper; private String path="/info-node"; @Before public void kaishi() throws IOException { zooKeeper=new ZooKeeper("hadoop-node3", 30000, new Watcher() { @Override public void process(WatchedEvent watcherEvent) { if(watcherEvent.getType()==Event.EventType.NodeCreated){ System.out.println("节点存在开始删除"); try { deleteNode(); } catch (KeeperException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } } }); } private void deleteNode() throws KeeperException, InterruptedException { Stat stat=zooKeeper.exists(path,true); if(stat!=null){ System.out.println("节点存在"); zooKeeper.delete(path,-1); System.out.println("创建的节点被删除了"); zooKeeper.exists(path,true); }else{ System.out.println("节点不存在"); } } @After public void close() throws InterruptedException { zooKeeper.close(); } @Test public void run() throws IOException, KeeperException, InterruptedException { deleteNode(); System.in.read(); } }
阅读全文
0 0
- zookeeper
- zookeeper
- zookeeper
- zookeeper
- zookeeper
- zookeeper
- zookeeper
- zookeeper
- ZooKeeper
- zookeeper
- zookeeper
- zookeeper
- zookeeper
- zookeeper
- ZooKeeper
- zookeeper
- zookeeper
- Zookeeper
- Myeclipse、eclipse安装lombok
- ORACLE startup报错之ORA-01154&&ORA-01155&&ORA-01033&&ORA-03113
- 2017 Multi-University Training Contest
- 【逐梦旅程Windows游戏编程学习笔记 ①】基本GDI绘图
- [HDU]6058 Kanade's sum
- Zookeeper
- 排序算法的时间复杂度和空间复杂度
- P2P中的NAT穿越方案简介
- 从日常开发说起,浅谈HTTP协议是做什么的
- js的image()循环创建,src始终为最近创建的那个解决办法(给image.onload传参)
- Javascript之Object.assign()
- 第十七章:容器深入研究
- codeforces 835C(二维前缀和)
- 算法-array-6-ReshapetheMatrix