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

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

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

zkCli.sh -server localhost:2181

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

1、显示所有操作命令

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

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

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

3、查看当前节点数据

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

4、创建节点

指令格式如下:

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

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

create -s /testnode test

在这里插入图片描述

创建临时节点指令:

create -e /testnode-temp testtemp

在这里插入图片描述

创建永久节点指令:

create /testnode-p testp

在这里插入图片描述

5、获取节点

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

get /

在这里插入图片描述

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

get /testnode-temp

在这里插入图片描述

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

6、修改节点

指令格式如下:

set path data [version]

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

set /testnode-temp 123

在这里插入图片描述

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

7、监听节点

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

get /testnode-temp watch

在这里插入图片描述

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

zkCli.sh -server hadoop01:2181

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

set /testnode-temp testwatch

在这里插入图片描述

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

8、删除节点

指令格式如下:

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

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

delete /testnode-temp

在这里插入图片描述

三、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>

在这里插入图片描述

然后在项目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());
			}
		});
	}
}

2、创建目录节点

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

在这里插入图片描述

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

3、创建子目录节点

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

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

4、获取目录节点数据

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

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

5、获取子目录节点列表

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

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

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

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

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

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

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

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

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

8、删除子目录节点

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

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

9、删除目录节点

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

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

10、客户端关闭

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

zk.close();

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

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七层楼的疯子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值