hadoop 自学指南十一之Zookeeper

一、前言

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、节点属性结构


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值