zookeeper集群搭建
- ZOOKEEPER安装
ZOOKEEPER集群
安装
[hadoop@master ~/soft]
t
a
r
−
x
v
f
z
o
o
k
e
e
p
e
r
−
3.4.6.
t
a
r
.
g
z
[
h
a
d
o
o
p
@
m
a
s
t
e
r
/
s
o
f
t
]
tar -xvf zookeeper-3.4.6.tar.gz [hadoop@master ~/soft]
tar−xvfzookeeper−3.4.6.tar.gz[hadoop@master /soft]mv /home/hadoop/soft/zookeeper-3.4.6 /home/hadoop/install
[hadoop@master ~/soft]$cd /home/hadoop/install
修改环境变量
[root@master /home/hadoop]$vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/home/hadoop/install/hadoop-2.7.4
export MYSQL_HOME=/usr/local/mysql
export ZOOKEEPER_HOME=/home/hadoop/install/zookeeper-3.4.6
export HIVE_HOME=/home/hadoop/install/hive
export PS1="[\u@\h \w]$"
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin:
H
A
D
O
O
P
H
O
M
E
/
b
i
n
:
HADOOP_HOME/bin:
HADOOPHOME/bin:HADOOP_HOME/sbin:
M
Y
S
Q
L
H
O
M
E
/
b
i
n
:
MYSQL_HOME/bin:
MYSQLHOME/bin:HIVE_HOME/bin:$ZOOKEEPER_HOME/bin
source /etc/profile
修改配置文件
cd ~/install/zookeeper-3.4.6/conf
vim zoo.cfg
clientPort=2181
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
创建数据目录(三个节点)
[hadoop@master ~/install]
m
k
d
i
r
−
p
/
d
a
t
a
/
z
o
o
k
e
e
p
e
r
/
d
a
t
a
[
h
a
d
o
o
p
@
m
a
s
t
e
r
/
i
n
s
t
a
l
l
]
mkdir -p /data/zookeeper/data [hadoop@master ~/install]
mkdir−p/data/zookeeper/data[hadoop@master /install]mkdir -p /data/zookeeper/logs
master:
echo 1 > /data/zookeeper/data/myid
slave1:
echo 2 > /data/zookeeper/data/myid
slave2:
echo 3 > /data/zookeeper/data/myid
chown -R hadoop.hadoop /data/zookeeper
分发安装包
scp -r zookeeper-3.4.6 slave1:~/install/
scp -r zookeeper-3.4.6 slave2:~/install/
启动zkServer(三节点)
zkServer.sh start
命令
zkServer.sh start/stop/status
通过zkCli进入到zkServer里面
zkCli.sh
…
讲解zk cli shell操作
创建节点(
create 命令
/mynode 节点名字
helloworld 节点数据)
[zk: localhost:2181(CONNECTED) 1] create /mynode “helloworld”
Created /mynode
[zk: localhost:2181(CONNECTED) 2] ls /
[mynode, zookeeper]
[zk: localhost:2181(CONNECTED) 3] ls /mynode
[]
默认创建的永久节点,session断开后,不会被自动删除掉
创建顺序节点
create -s /mynode2 helloword
创建临时节点
create -e /datahehe helloword
创建子节点
[zk: localhost:2181(CONNECTED) 5] create /mynode/mynodechild “hello1”
Created /mynode/mynodechild
[zk: localhost:2181(CONNECTED) 6] create /mynode/mynodechild2 “hello2”
Created /mynode/mynodechild2
[zk: localhost:2181(CONNECTED) 7] create /mynode/mynodechild3 “hello3”
退出
quit
查看节点内数据
[zk: localhost:2181(CONNECTED) 4] get /mynode
“helloworld” ------------->节点数据
cZxid = 0x100000002
ctime = Mon Nov 26 10:15:10 CST 2018
----------------------------------------创建节点的事务ID
mZxid = 0x100000002
mtime = Mon Nov 26 10:15:10 CST 2018
---------------------------------------每次修改znode之后,修改zxid
pZxid = 0x100000002
--------------------------------------表示该节点的子节点列表最后一次被修改时的事务ID(各个子节点内部数据发生变化,是不会变动的)
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 12
numChildren = 0
合起来叫对象:Stat
删除znode
delete /mynode/mynodechild
delete /mynode
(如果该节点有子节点,删除不掉)
rmr /mynode
修改数据
[zk: localhost:2181(CONNECTED) 5] set /mynode “hello12”
创建另一个 znode
[zk: localhost:2181(CONNECTED) 12] create /znode2 hello
Created /znode2
现在,让我们在 /mysecondnode 验证和检索数据。这一次,我们在最后提供了一个可选参数 1。此参数为 /mysecondnode 上
的数据设置了一个一次性的触发器(名称为 watch)。如果另一个客户端在 /mysecondnode 上修改数据,该客户端将会获得一个
异步通知。请注意,该通知只发送一次,除非 watch 被重新设置,否则不会因数据发生改变而再次发送通知。
在/znode12 上验证和检索数据
[zk: localhost:2181(CONNECTED) 13] get /znode2 1
hello
cZxid = 0x200000035
ctime = Thu Apr 21 09:26:55 CST 2016
mZxid = 0x200000035
mtime = Thu Apr 21 09:26:55 CST 2016
pZxid = 0x200000035
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
现在,从不同的客户端(比如,从不同的机器)更改与 /mysecondnode 有关联的数据的值。