当前位置:   article > 正文

六、Hadoop系统应用之Zookeeper分布式协调服务(二)(超详细步骤指导操作,WIN10,VMware Workstation 15.5 PRO,CentOS-6.7)_基于zookeeper的分布式协调服务系统搭建

基于zookeeper的分布式协调服务系统搭建

Hadoop集群搭建前安装准备参考:
一、Hadoop系统应用之安装准备(一)(超详细步骤指导操作,WIN10,VMware Workstation 15.5 PRO,CentOS-6.7)
一、Hadoop系统应用之安装准备(二)(超详细步骤指导操作,WIN10,VMware Workstation 15.5 PRO,CentOS-6.7)
Hadoop集群搭建过程参考:
二、Hadoop系统应用之Hadoop集群搭建(超详细步骤指导操作,WIN10,VMware Workstation 15.5 PRO,CentOS-6.7)
Zookeeper原理及安装部署参考:
六、Hadoop系统应用之Zookeeper分布式协调服务(一)(超详细步骤指导操作,WIN10,VMware Workstation 15.5 PRO,CentOS-6.7)

一、Zookeeper的Shell指令简介

Zookeeper命令行工具类似于Linux的Shell环境,能够简单地实现对Zookeeper进行访问、数据创建、数据修改等的一系列操作。

常用命令命令描述
ls/使用ls命令来查看Zookeeper中所包含的内容
ls2 /查看当前节点数据并能看到更新次数等数据
create /zk “test”在当前目录创建一个新的Znode节点“zk”以及与它关联的字符串
get /zk获取zk所包含的信息
set /zk “zkbak”对zk所关联的字符串进行设置
delete /zk将节点Znode删除
rmr将节点Znode递归删除
help帮助命令

二、实验操作:Zookeeper的Shell操作

首先在三个服务器上启动Zookeeper服务。指令如下:

zkServer.sh start
  • 1

之后在hadoop01上使用如下指令进行Zookeeper服务的连接:

zkCli.sh -server localhost:2181
  • 1

只要对应服务器上的Zookeeper服务启动,localhost可改为hadoop01、hadoop02或hadoop03。
启动成功后进入Zookeeper命令行终端,界面如下:
在这里插入图片描述

1、显示所有操作命令

指令为“help
在这里插入图片描述

2、查看当前Zookeeper中所包含的内容

指令格式:ls path
指令为“ls /”,其中“/”表示查看根节点信息。
在这里插入图片描述

3、查看当前节点数据

指令格式:ls2 path
指令为“ls2 /”,会输出当前数据并且能看到更新次数等数据。
在这里插入图片描述

4、创建节点

指令格式如下:

create [-s] [-e] path data acl
  • 1

创建序列化永久节点指令:

create -s /testnode test
  • 1

在这里插入图片描述

创建临时节点指令:

create -e /testnode-temp testtemp
  • 1

在这里插入图片描述

创建永久节点指令:

create /testnode-p testp
  • 1

在这里插入图片描述

5、获取节点

除了前面的“ls”和“ls2”外还可以使用指令“get”获取指定节点的数据内容和属性信息,以获取根节点信息为例:

get /
  • 1

在这里插入图片描述

以获得上一步创建的临时节点testnode-temp为例:

get /testnode-temp
  • 1

在这里插入图片描述

注:在获取节点信息时,路径的写法要写绝对路径,即从根节点开始。

6、修改节点

指令格式如下:

set path data [version]
  • 1

将刚刚创建的临时节点testnode-temp数据进行修改,改为“123”,指令如下:

set /testnode-temp 123
  • 1

在这里插入图片描述

修改之后获取该节点信息查看可看到该节点数据被修改为123。
在这里插入图片描述

7、监听节点

首先客户端向服务端注册Watch.例如向临时节点testnode-temp注册Watch,在hadoop01输入指令如下:

get /testnode-temp watch
  • 1

在这里插入图片描述

然后服务器端事件触发Watch。例如在hadoop02上修改临时节点testnode-temp的数据,首先在hadoop02上进入Zookeepr终端,指令如下:

zkCli.sh -server hadoop01:2181
  • 1

然后修改临时节点testnode-temp的数据,在hadoop02上输入指令如下:

set /testnode-temp testwatch
  • 1

在这里插入图片描述

最后客户端回调Watch得到触发事件的情况,可在hadoop01上可以看到触发事件的内容。
在这里插入图片描述

8、删除节点

指令格式如下:

delete path [version]  //删除无子节点的节点
rmr path [version]  //递归删除节点
  • 1
  • 2

例如删除临时节点testnode-temp。指令如下:

delete /testnode-temp
  • 1

在这里插入图片描述

三、Zookeeper的Java API简介

Zookeeper提供了Java API,可以在Java中调用Zookeeper进行操作。首先应用程序需要创建一个Zookeeper实例对象,一旦客户端与Zookeeper服务建立了连接,Zookeeper系统将会为此连接分配一个会话的ID值,并且客户端会周期性地向服务器发送心跳信号来保持会话的连接,只要连接正常,客户端就可以调用Zookeeper API进行操作,Zookeeper提供的常用方法如下:

方法名称方法描述
create创建节点
delete删除节点
exists判断节点是否存在
get/setData获取/修改节点数据
getChildren获取指定节点下的所有子节点列表

四、实验操作:Zookeeper的Java API操作

1、创建Zookeeper客户端

首先添加依赖,将如下内容添加到pom.xml文件中。

<dependency>
	<groupId>org.apache.zookeeper</groupId>
	<artifactId>zookeeper</artifactId>
	<version>3.4.10</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

然后在项目src文件下创建cn.itcast.zookeeper包,在此包下创建ZookeeperTest.java文件来操作Zookeeper文件。
导入包的信息,可以在后面抛出异常时进行添加。
最后按照下述内容创建Zookeeper客户端。

public class ZookeeperTest {
	public static void main(String[] args) throws Exception {
		// 步骤一:创建Zookeeper客户端
		// 初始化ZooKeeper实例(参数1:zk地址;参数2:会话超时时间,与系统默认一致;参数3:监听器)
		ZooKeeper zk = new ZooKeeper("hadoop01:2181,hadoop02:2181,hadoop03:2181", 30000, new Watcher() {
			// 监听触发事件
			public void process(WatchedEvent event) {
				System.out.println("事件类型为: " + event.getType());
				System.out.println("事件发生的路径: " + event.getPath());
				System.out.println("通知状态为: " + event.getState());
			}
		});
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2、创建目录节点

// 参数1:创建节点路径;参数2:节点数据;参数3:节点权限;参数4:节点类型(PERSISTENT为永久节点)
zk.create("/testRootPath", "testRootData".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
  • 1
  • 2

在这里插入图片描述

执行之后可进入Zookeeper终端查看是否创建成功。
在这里插入图片描述

3、创建子目录节点

// 包含参数与步骤二一致,只是节点路径为上一个节点处创建子节点
zk.create("/testRootPath/testChildPathOne", "testChildDataOne".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
  • 1
  • 2

执行之后可进入Zookeeper终端查看是否创建成功。
在这里插入图片描述

4、获取目录节点数据

// 参数1:存储节点数据路径;参数2:是否要监控此节点;参数3:节点的统计信息
System.out.println("testRoorData节点数据为:"+ new String(zk.getData("/testRootPath",false,null)));
  • 1
  • 2

执行之后结果如下:
在这里插入图片描述

5、获取子目录节点列表

// 参数1:获取子节点的父节点路径;参数2:是否要监听此节点
System.out.println(zk.getChildren("/testRootPath", true));
  • 1
  • 2

执行之后结果如下:
在这里插入图片描述

6、修改子目录节点数据,使得监听触发

// 参数1:存储子目录节点数据的路径;参数2:要修改的数据;参数3:预期要匹配的版本(-1为匹配任何版本)
zk.setData("/testRootPath/testChildPathOne", "modifyChildDataOne".getBytes(), -1);
  • 1
  • 2

执行之后可进入Zookeeper终端查看数据是否修改成功。
在这里插入图片描述

7、判断目录节点是否存在

// 参数1:节点路径;参数2:是否要监听此节点
System.out.println("目录节点状态: [" + zk.exists("/testRootPath", true) + "]");
  • 1
  • 2

执行之后结果如下:
在这里插入图片描述

注:返回的是stat对象,是文件的状态信息。

8、删除子目录节点

// 参数1:节点路径;参数2:节点的版本
zk.delete("/testRootPath/testChildPathOne", -1);
  • 1
  • 2

运行后可进入Zookeeper终端查看该节点是否删除成功。
在这里插入图片描述

9、删除目录节点

// 参数部分与删除子目录节点相同
zk.delete("/testRootPath", -1);
  • 1
  • 2

运行后可进入Zookeeper终端查看该节点是否删除成功。
在这里插入图片描述

10、客户端关闭

使用完客户端后在代码最下方可加上zk.close()关闭客户端。

zk.close();
  • 1

将上述内容同时运行过后,控制台将输出如下内容:
在这里插入图片描述

参考文献:黑马程序员.Hadoop大数据技术原理与应用[M].北京:清华大学出版社,2019.

后续学习链接:
七、Hadoop系统应用之搭建Hadoop高可用集群(超详细步骤指导操作,WIN10,VMware Workstation 15.5 PRO,CentOS-6.7)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/555219
推荐阅读
相关标签
  

闽ICP备14008679号