一、zookeeper-3.4.5集群的配置
1 、服务器介绍
三台服务器 分别是 Master.Hadoop、Slave1.Hadoop、Slave2.Hadoop、
Slave3.Hadoop
其中Hadoop 的NameNode 部署在 Master.Hadoop上
使用的 hadoop用户:由root用户创建
useradd hadoop
2、下载对应版本的zookeeper
官网下载
解压后, mv 到hadoop 目录下zookeeper
chown -R hadoop:hadoop zookeeper
3、配置zoo.cfg
b) 修改zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/hadoop/zookeeper/pid
clientPort=2181
server.1=Master.Hadoop:2888:3888
server.2=Slave1.Hadoop:2888:3888
server.3=Slave2.Hadoop:2888:3888
server.4=Slave3.Hadoop:2888:3888
#注释: 集群的 节点配置 必须是 server.X=Host:2888:3888
其中 :2888、3888用于zookeeper之间的通讯
server.X 中的 X 用于下面myid中的值
4、 创建myid
分别依次进入到三个服务器下 根据配置的 server.X 来设置myid的内容
myid 位于上面我们配置的dataDir中文件夹下
a) cd /usr/hadoop/zookeeper/pid
b)echo 1 > myid
注意: echo 1 中的 1 对应着server.X中的X的值
5、编辑/etc/profile
a) su
b) vim /etc/profile
在最后追加:
export ZOOKEEPER_HOME=${HADOOP_HOME}/zookeeper
export PATH=${PATH}:${ZOOKEEPER_HOME}/bin
由于实例将zookeeper的放在了 Hadoop下 所以使用了 ${HADOOP_HOME},具体设置
以zookeeper的路径为准。
c) source /etc/profile
6、启动zookeeper server
进入到hadoop用户
a)su - hadoop
b)zkServer.sh start
start #开启 stop #关闭
开启之后,会在pwd也就是当前目录下,产生一个zookeeper.out的文件,
用more zookeeper.out打开这个文件,可以看到启动的信息
如下:
2014-02-15 02:56:23,196 [myid:1] - WARN [WorkerSender
[myid=1]:QuorumCnxManager@
368] - Cannot open channel to 4 at election address
Slave3.Hadoop/192.168.1.5:38
88
java.net.ConnectException: Connection refused
...
等信息,这是因为其他的服务器还没有开启zookeeper服务,接下来就是
用zkServer.sh start依次开启Slave1.Hadoop、Slave2.Hadoop、Slave3.Hadoop的
服务。
之后异常信息便会被正常信息给覆盖。
c) zkServer.sh status 查看状态
[hadoop@Master ~]$ zkServer.sh status
JMX enabled by default
Using config: /usr/zookeeper/bin/../conf/zoo.cfg
Mode: follower
[hadoop@Slave1 ~]$ zkServer.sh status
JMX enabled by default
Using config: /usr/zookeeper/bin/../conf/zoo.cfg
Mode: follower
[hadoop@Slave2 ~]$ zkServer.sh status
JMX enabled by default
Using config: /usr/zookeeper/bin/../conf/zoo.cfg
Mode: leader
[hadoop@Slave3 ~]$ zkServer.sh status
JMX enabled by default
Using config: /usr/zookeeper/bin/../conf/zoo.cfg
Mode: follower
发现leader有一个(随机),follower有三个。
c) 进入到zkClient
zkCli.sh
需要注意的事项有:
1.四台服务器的系统时间在保持一致,否则实验也有可能会失败,之前做实验的时
间,有两台时间相差了几天,这是必错的。因为zookeeper.out文件会同步,如果
时间不一致,将不会同步最新信息。准备地来讲,这不错,我们从zookeeper.out
查看到的错只是一种假像,只是没有同步而已。
2.防火墙一定要关:
本人linux:CenOS6.5:
需要关两个东西:
要vi /etc/selinux/confing改成SELINUX=disabled;
chkconfig iptables off
3.配置完后,如果不放心,先重启。
二、有关zookper的shell操作:
zkCli.sh
[zk: localhost:2181(CONNECTED) 0] jf
ZooKeeper -server host:port cmd args
connect host:port
get path [watch]
ls path [watch]
set path data [version]
rmr path
delquota [-n|-b] path
quit
printwatches on|off
create [-s] [-e] path data acl
stat path [watch]
close
ls2 path [watch]
history
listquota path
setAcl path acl
getAcl path
sync path
redo cmdno
addauth scheme auth
delete path [version]
setquota -n|-b val path
zookeeper中也有一个类似与文件系统的目录结构,它被称为“节点”,这些结点
可以添加,删除等。
[zk: localhost:2181(CONNECTED) 2] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 3] ls /zookeeper
[quota]
[zk: localhost:2181(CONNECTED) 4] ls /zookeeper/quota
[]
[zk: localhost:2181(CONNECTED) 5] create /arlanhon hadoop
Created /arlanhon
[zk: localhost:2181(CONNECTED) 6] ls /
[arlanhon, zookeeper]
[zk: localhost:2181(CONNECTED) 7] get /arlanhon
hadoop
cZxid = 0x400000004
ctime = Sat Feb 15 23:55:32 CST 2014
mZxid = 0x400000004
mtime = Sat Feb 15 23:55:32 CST 2014
pZxid = 0x400000004
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
关于zookeeper的一致性: