在使用maven项目编写动物园管理员程序时导入相关的jar包:
<代码> & lt; dependency> & lt; groupId> org.apache.zookeeper & lt; artifactId> zookeeper & lt; version> 3.4.10 & lt;/dependency> 代码><人力资源/>
1。创建集群连接
<代码>//集群节点节点,之间使用逗号隔开 静态字符串url=" hadoop01:2181、hadoop02:2181 hadoop03:2181”;//集群编程入口 静态饲养员zk;//超时时间 静态长时间=5000;//使用静态代码块,初始化动物园管理员对象 静态{ 尝试{ zk=new管理员(url (int)时间,空); }捕捉(IOException e) { e.printStackTrace (); } }代码>
2。创建节点
<代码>公共空createZnode(饲养员zk) {//必须使用绝对路径 字符串路径="/测试/test04”;//在创建创建节点时,必须指定节点内容 字节数据[]="我是一个好男孩!”.getBytes (); 尝试{/* * * zk.create的四个参数表示: * __arg1:节点路径 *最长:节点存放的内容 *长度:权限设置:默认 * arg4:节点类型(永久无顺序,永久有顺序,临时无顺序,临时有顺序) */字符串信息=zk。创建(路径、数据ZooDefs.Ids.OPEN_ACL_UNSAFE ,CreateMode.EPHEMERAL); System.out.println(信息==null ?“失败”,“成功”); }捕捉(KeeperException e) { e.printStackTrace (); }捕捉(InterruptedException e) { e.printStackTrace (); } }代码>
3。查看节点信息
<代码>公共空getInfo (zk饲养员,字符串路径){ 尝试{/* * * zk。getData(路径,空,空); *参数1:节点的绝对路径字符串 *参数2:节点的监听 *参数3:节点的状态对象 */byte [] data=https://www.yisu.com/zixun/zk.getData(路径,空,空); system . out。println(“节点:“+ +路径”的信息是:”+(新字符串(数据))); }捕捉(KeeperException e) { e.printStackTrace (); }捕捉(InterruptedException e) { e.printStackTrace (); } }代码>
4。修改节点数据
<代码>公共空updateData (zk饲养员,字符串路径){ 尝试{/* * * zk。setData(路径、数据版本); *路径:修改内容的节点 *数据:更新的数据 *版本:修改的版本:如果不知道,写1,表示最新版本 */zk.setData(路径,“哈哈”.getBytes (), 1); }捕捉(异常e) { e.printStackTrace (); } }代码>
5。删除节点
<代码>公共空deleteZnode (zk饲养员,字符串路径){ 尝试{/* * * zk.delete(路径、版本); *路径:路径 *版本:删除的版本,如果不知道,写1,表示删除最新版本int */zk.delete(路径,1); }捕捉(异常e) { e.printStackTrace (); } }代码>
6。获取znode节点的权限信息
<代码>公共空getACL (zk饲养员,字符串路径){ 尝试{/* * * zk.getACL(路径,统计) *路径:路径 *统计:状态信息 */Listacl=zk。getACL(路径,null); (ACL ACL: ACL) { System.out.println (acl.getPerms ()); } }捕捉(异常e) { e.printStackTrace (); } }代码>
7。获取子节点
<代码>公共空getChildren (zk饲养员,字符串路径){ 尝试{//判断节点是否存在 如果(zk。存在(路径,null)==null) { List儿童=zk。调用getChildren(路径,null); (字符串儿童:儿童){//注意这里面收到的都是当前节点下的子节点的相对路径 System.out.println(孩子); } } }捕捉(异常e) { e.printStackTrace (); } }代码>
8. znode的测试监听
<代码>公共类testZKWatcher { 静态字符串url=" hadoop01:2181、hadoop02:2181 hadoop03:2181”; 静态饲养员zk; 静态长时间=5000; 静态{ 尝试{ zk=new管理员(url (int)时间,空); }捕捉(异常e) { e.printStackTrace (); } }//设置监听 公共静态孔隙liisten (String路径,饲养员zk) { 尝试{ zk。存在(路径,新观察家(){ @Override//WatchedEvent事件监听事件对象 公共空间过程(WatchedEvent事件){//节点触发的类型(新增,修改,创建……) 事件。EventType type=event.getType ();//获取触发的节点的路径 event.getPath (); System.out.println(“触发事件的路径”+路径+”,触发的事件的类型”+类型); } }); }捕捉(异常e) { e.printStackTrace (); } } 公共静态void main (String [] args) { 字符串路径="/测试/test01”; liisten(路径,zk); 尝试{//触发监听 zk.create (“jj”、“zzy”.getBytes (), ZooDefs.Ids.OPEN_ACL_UNSAFE CreateMode.EPHEMERAL); }捕捉(异常e) { e.printStackTrace (); } } }大数据生态之管理员(API)