hadoop 自学指南十一之Zookeeper
2015-10-08 11:45
363 查看
一、前言
Zookeeper是一个为分布式应用所设计的开源协议服务。它可以为用户提供同步、配置、管理、分组和命名等服务。用户可以使用Zookeeper提供的实现一致性、组管理、Leader选举及某些协议。
二、zooKeeper特点
简单的、丰富的组件(分布式队列、分布式锁和同级选举)、高可用、松耦合、资源库
Zookeeper可以看成一个具有高可用的文件系统,但这个文件系统没有文件和目录,而是统一使用节点,称为Znode。所有的Znode 构成层次化的命名空间。一种自然的建立组
成员列表的方式就是利用这种层次结构,创建一个以组名为节点的znode作为父亲节点。
三、ZooKeeper API 的使用
四、ZooKeeper的数据模型
1、Znode
zookeeper目录树中的每一个节点对应着一个Znode,每个Zonde 维护着一个属性结构,包含版本号、时间戳等状态信息.
Watches
分为两类:数据Watch(data watch) , 孩子watch(child watch)
数据访问(ACL)
acl不能被子节点继承父节点所拥有的权限与子节点的权限没有任何关系。
Zookeeper ACL 的使用依赖于验证,支持如下几种验证模式
world
代表某一特定的用户
auth
代表任何已经通过验证的用户
digest
通过用户名和密码的用户
ip 通过客户端ip地址验证
API支持的三种标准用户权限
ZOO_OPEN_ACL_UNSAFE
ZOO_READ_ACL_UNSAFE
ZOO_CREATE_ALL_ACL
临时节点
顺序节点(唯一性保证)
2、Zookeeper时间
Zxid
版本号
3、节点属性结构
Zookeeper是一个为分布式应用所设计的开源协议服务。它可以为用户提供同步、配置、管理、分组和命名等服务。用户可以使用Zookeeper提供的实现一致性、组管理、Leader选举及某些协议。
二、zooKeeper特点
简单的、丰富的组件(分布式队列、分布式锁和同级选举)、高可用、松耦合、资源库
Zookeeper可以看成一个具有高可用的文件系统,但这个文件系统没有文件和目录,而是统一使用节点,称为Znode。所有的Znode 构成层次化的命名空间。一种自然的建立组
成员列表的方式就是利用这种层次结构,创建一个以组名为节点的znode作为父亲节点。
三、ZooKeeper API 的使用
package hadoop.v15; import java.io.IOException; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooDefs.Ids; import org.apache.zookeeper.ZooKeeper; public class Demo { //会话超时时间,设置为与系统默认时间一致 private static final int SESSION_TIMEOUT=30000; //创建ZooKeeper实例 ZooKeeper zk; //创建Watcher实例 Watcher wh=new Watcher(){ public void process(org.apache.zookeeper.WatchedEvent event) { System.out.println(event.toString()); } }; //初始化ZooKeeper实例 private void createZKInstance() throws IOException { zk=new ZooKeeper("192.168.100.150:2181",Demo.SESSION_TIMEOUT,this.wh); } private void ZKOperations() throws IOException,InterruptedException,KeeperException { System.out.println("\n1.创建ZooKeeper节点(znode:zoo2,数据:myData2,权限:OPEN_ACL_UNSAFE,节点类型:Persistent"); zk.create("/zoo2","myData2".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println("\n2.查看是否创建成功:"); System.out.println(new String(zk.getData("/zoo2",false,null))); System.out.println("\n3.修改节点数据"); zk.setData("/zoo2", "shenlan211314".getBytes(), -1); System.out.println("\n4.查看是否修改成功:"); System.out.println(new String(zk.getData("/zoo2", false, null))); System.out.println("\n5.删除节点"); zk.delete("/zoo2", -1); System.out.println("\n6.查看节点是否被删除:"); System.out.println("节点状态:["+zk.exists("/zoo2", false)+"]"); } private void ZKClose() throws InterruptedException { zk.close(); } public static void main(String[] args) throws IOException,InterruptedException,KeeperException { Demo dm=new Demo(); dm.createZKInstance( ); dm.ZKOperations(); dm.ZKClose(); } }
四、ZooKeeper的数据模型
1、Znode
zookeeper目录树中的每一个节点对应着一个Znode,每个Zonde 维护着一个属性结构,包含版本号、时间戳等状态信息.
Watches
分为两类:数据Watch(data watch) , 孩子watch(child watch)
数据访问(ACL)
acl不能被子节点继承父节点所拥有的权限与子节点的权限没有任何关系。
Zookeeper ACL 的使用依赖于验证,支持如下几种验证模式
world
代表某一特定的用户
auth
代表任何已经通过验证的用户
digest
通过用户名和密码的用户
ip 通过客户端ip地址验证
API支持的三种标准用户权限
ZOO_OPEN_ACL_UNSAFE
ZOO_READ_ACL_UNSAFE
ZOO_CREATE_ALL_ACL
临时节点
顺序节点(唯一性保证)
2、Zookeeper时间
Zxid
版本号
3、节点属性结构
相关文章推荐
- LINUX下php连接mssql数据库中文字符乱码问题解决
- linux下mysql密码修改
- centos7 安装sublime text3 及package control以及问题解决
- 负载均衡反向代理模式优点及缺点
- centos 6.5下搭建svn服务端
- VMware下centos桥接模式静态ip配置
- Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web
- 你知道Parallels desktop使用方法吗
- 解决DropDownList总是选中第一项的方法
- Linux proc读操作为什么会执行3次
- centos 安装scipy
- Mac OS下 eclipse + tomcat 开发环境的搭建
- Unrecognized VM option '+UseCompressedOops'
- linuxmint下nano编辑器使用教程
- centos 6.5 安装配置R问题记录
- opencv2常用英语单词总结
- tftp在linux下的使用
- 更换linux自带openJDK
- 使用 ansible 安装 NGINX 和 NGINX Plus
- linux常用命令(66):wget命令