赞
踩
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命令行工具类似于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服务。指令如下:
zkServer.sh start
之后在hadoop01上使用如下指令进行Zookeeper服务的连接:
zkCli.sh -server localhost:2181
只要对应服务器上的Zookeeper服务启动,localhost可改为hadoop01、hadoop02或hadoop03。
启动成功后进入Zookeeper命令行终端,界面如下:
指令为“help
”
指令格式:ls path
指令为“ls /
”,其中“/
”表示查看根节点信息。
指令格式:ls2 path
指令为“ls2 /
”,会输出当前数据并且能看到更新次数等数据。
指令格式如下:
create [-s] [-e] path data acl
创建序列化永久节点指令:
create -s /testnode test
创建临时节点指令:
create -e /testnode-temp testtemp
创建永久节点指令:
create /testnode-p testp
除了前面的“ls
”和“ls2
”外还可以使用指令“get
”获取指定节点的数据内容和属性信息,以获取根节点信息为例:
get /
以获得上一步创建的临时节点testnode-temp为例:
get /testnode-temp
注:在获取节点信息时,路径的写法要写绝对路径,即从根节点开始。
指令格式如下:
set path data [version]
将刚刚创建的临时节点testnode-temp数据进行修改,改为“123”,指令如下:
set /testnode-temp 123
修改之后获取该节点信息查看可看到该节点数据被修改为123。
首先客户端向服务端注册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上可以看到触发事件的内容。
指令格式如下:
delete path [version] //删除无子节点的节点
rmr path [version] //递归删除节点
例如删除临时节点testnode-temp。指令如下:
delete /testnode-temp
Zookeeper提供了Java API,可以在Java中调用Zookeeper进行操作。首先应用程序需要创建一个Zookeeper实例对象,一旦客户端与Zookeeper服务建立了连接,Zookeeper系统将会为此连接分配一个会话的ID值,并且客户端会周期性地向服务器发送心跳信号来保持会话的连接,只要连接正常,客户端就可以调用Zookeeper API进行操作,Zookeeper提供的常用方法如下:
方法名称 | 方法描述 |
---|---|
create | 创建节点 |
delete | 删除节点 |
exists | 判断节点是否存在 |
get/setData | 获取/修改节点数据 |
getChildren | 获取指定节点下的所有子节点列表 |
首先添加依赖,将如下内容添加到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());
}
});
}
}
// 参数1:创建节点路径;参数2:节点数据;参数3:节点权限;参数4:节点类型(PERSISTENT为永久节点)
zk.create("/testRootPath", "testRootData".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
执行之后可进入Zookeeper终端查看是否创建成功。
// 包含参数与步骤二一致,只是节点路径为上一个节点处创建子节点
zk.create("/testRootPath/testChildPathOne", "testChildDataOne".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
执行之后可进入Zookeeper终端查看是否创建成功。
// 参数1:存储节点数据路径;参数2:是否要监控此节点;参数3:节点的统计信息
System.out.println("testRoorData节点数据为:"+ new String(zk.getData("/testRootPath",false,null)));
执行之后结果如下:
// 参数1:获取子节点的父节点路径;参数2:是否要监听此节点
System.out.println(zk.getChildren("/testRootPath", true));
执行之后结果如下:
// 参数1:存储子目录节点数据的路径;参数2:要修改的数据;参数3:预期要匹配的版本(-1为匹配任何版本)
zk.setData("/testRootPath/testChildPathOne", "modifyChildDataOne".getBytes(), -1);
执行之后可进入Zookeeper终端查看数据是否修改成功。
// 参数1:节点路径;参数2:是否要监听此节点
System.out.println("目录节点状态: [" + zk.exists("/testRootPath", true) + "]");
执行之后结果如下:
注:返回的是stat对象,是文件的状态信息。
// 参数1:节点路径;参数2:节点的版本
zk.delete("/testRootPath/testChildPathOne", -1);
运行后可进入Zookeeper终端查看该节点是否删除成功。
// 参数部分与删除子目录节点相同
zk.delete("/testRootPath", -1);
运行后可进入Zookeeper终端查看该节点是否删除成功。
使用完客户端后在代码最下方可加上zk.close()关闭客户端。
zk.close();
将上述内容同时运行过后,控制台将输出如下内容:
参考文献:黑马程序员.Hadoop大数据技术原理与应用[M].北京:清华大学出版社,2019.
后续学习链接:
七、Hadoop系统应用之搭建Hadoop高可用集群(超详细步骤指导操作,WIN10,VMware Workstation 15.5 PRO,CentOS-6.7)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。