设为首页 加入收藏

TOP

Hadoop学习(5)-zookeeper的安装和命令行,java操作(一)
2019-09-17 16:03:19 】 浏览:54
Tags:Hadoop 学习 -zookeeper 安装 命令 java 操作

zookeeper是干嘛的呢

Zookeeper的作用
1.可以为客户端管理少量的数据kv
key:是以路径的形式表示的,那就意味着,各key之间有父子关系,比如
/ 是顶层key
用户建的key只能在/ 下作为子节点,比如建一个key: /aa 这个key可以带value数据
也可以建一个key: /bb
也可以建key: /aa/xx

 

 

2.可以为客户端监听指定数据节点的状态,并在数据节点发生变化是,通知客户端

 


Zookeeper 安装步骤
把包上传linux后解压到apps/
[root@hdp-01 ~]# tar -zxvf zookeeper-3.4.6.tar.gz -C apps/
/root/apps/zookeeper-3.4.6/conf下该配置文件
[root@hdp-01 conf]# cp zoo_sample.cfg zoo.cfg
然后vim zoo.cfg
更改为
dataDir=/root/zkdata
最后添加
server.1=hdp-01:2888:3888
server.2=hdp-02:2888:3888
server.3=hdp-03:2888:3888
server.4=hdp-04:2888:3888
接着,在hdp-01上,新建数据目录/root/zkdata,并在目录重生成一个文件myid,内容为1
接着,在hdp-02上,新建数据目录/root/zkdata,并在目录重生成一个文件myid,内容为2
接着,在hdp-03上,新建数据目录/root/zkdata,并在目录重生成一个文件myid,内容为3
接着,在hdp-04上,新建数据目录/root/zkdata,并在目录重生成一个文件myid,内容为4
然后将zookeeper scp给其他机器
启动
[root@hdp-01 ~]# /root/apps/zookeeper-3.4.6/bin/zkServer.sh start
查看状态
[root@hdp-01 ~]# /root/apps/zookeeper-3.4.6/bin/zkServer.sh status

可以自己写一个脚本进行启动名字叫zkmanage.sh
用的时候后面跟上参数,传入$1.
sh ./zkmanage.sh start
或者关闭的时候
sh ./zkmanager.sh stop
脚本代码如下

复制代码
#!/bin/bash
for host in hdp-01 hdp-02 hdp-03 hdp-04
do
echo "${host}:starting...."
ssh $host "/root/apps/zookeeper-3.4.6/bin/zkServer.sh $1"
done
sleep 2
for host in hdp-01 hdp-02 hdp-03 hdp-04
do
ssh $host "/root/apps/zookeeper-3.4.6/bin/zkServer.sh status"
done
复制代码

注意一点,如果有的结点没有启动,一定要看一下是不是这几台机器的时间是不是不对应,如果差别太大是启动不起来的。f**k.

简单补充一点就是,启动之后,这几台机器,有的当leader,有的当follower,只有一个leader,他们谁当leader是根据他们 '投票的形式'的决定的。

只有一个leader

 

 

zookeeper的命令行客户端和java客户端

命令行

在bin/zkCli.sh

这样会连到本机localhost

指定连到哪一台zookeeper

bin/zkcli.sh –server hdp-02:2181

 

两个作用,管理数据和监听

首先是管理数据

 

也可以自己建数据

[zk: hdp-03:2181(CONNECTED) 8] create /aa "hellozk"

created /aa

 

[zk: hdp-03:2181(CONNECTED) 9] ls /

[aa, root, hbase, zookeeper]

 

[zk: hdp-03:2181(CONNECTED) 10] get /aa

"hellozk"

cZxid = 0xc00000023

ctime = Mon Aug 05 14:41:52 CST 2019

mZxid = 0xc00000023

mtime = Mon Aug 05 14:41:52 CST 2019

pZxid = 0xc00000023

cversion = 0

dataVersion = 0

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 9

numChildren = 0

 

 

 

修改数据

[zk: hdp-03:2181(CONNECTED) 11] set /aa hellospark

cZxid = 0xc00000023

ctime = Mon Aug 05 14:41:52 CST 2019

mZxid = 0xc00000024

mtime = Mon Aug 05 14:42:40 CST 2019

pZxid = 0xc00000023

cversion = 0

dataVersion = 1

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 10

numChildren = 0

这个数据版本,你没修改几次就会变成几

也可以在/aa下建立子目录

如果有些命令忘了,可以输入help查看帮助

 

删除就是rmr

[zk: hdp-03:2181(CONNECTED) 13] rmr /aa

 

监听

[zk: hdp-03:2181(CONNECTED) 17] create /aa iamfine

Created /aa

 

[zk: hdp-03:2181(CONNECTED) 18] get /aa watch

然后这时候如果改变了/aa 就让他通知我

在另一台机器上启动一个zookeeper

 

[zk: hdp-03:2181(CONNECTED) 2] set /aa iamnotfine

此时就会有信息

 

但当你再改一次的话,这个连接就不会再提醒了,这个监听只起一次作用。

 

数据类型分为好几种

zookeeper中的znode有多种类型:

1、PERSISTENT  持久的:创建者就算跟集群断开联系,该类节点也会持久存在与zk集群中

2、EPHEMERAL  短暂的:创建者一旦跟集群断开联系,zk就会将这个节点删除

3、SEQUENTIAL  带序号的:这类节点,zk会自动拼接上一个序号,而且序号是递增的

我们一般创建的都是持久的

create –e /bb xxx

这时候就是短暂的

create /cc yyyy

create –s /cc/c qq

然后他们就会自动的在这些子节点下带上序号

 

java客户端

 

 

 需要的jar包

 

import java.io.UnsupportedEncodingException; import java.util.L
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇mac下安装mongodb数据库教程 下一篇Windows下备份mysql

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目