- 下载
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
执行时报错:
原因:网站上已经没有了该版本
解决:到http://mirror.bit.edu.cn/apache/zookeeper网站上下载相应的版本 - 解压:tar xvzf zookeeper-3.4.13.tar.gz
- 移动:mv ./ zookeeper-3.4.13.tar.gz /usr/local/
- 执行zkServer.sh start /usr/local/zookeeper-3.4.13/conf/zoo1.cfg
报错:-bash: zkServer.sh: 未找到命令
解决:vim /etc/profile添加:
export ZOO_HOME=/usr/local/zookeeper-3.4.13
export PATH=$ZOO_HOME/bin:$PATH
然后执行 source /etc/profile ;
5. 启动zookeeper:zkServer.sh start /usr/local/zookeeper-3.4.13/conf/zoo1.cfg
6. 查看zk的状态:
zkServer.sh status /usr/local/zookeeper-3.4.13/conf/zoo1.cfg
7.停止zookeeper:zkServer.sh stop /usr/local/zookeeper-3.4.13/conf/zoo1.cfg
8.执行service iptables tatus 报错:
Redirecting to /bin/systemctl status iptables.service
Unit iptables.service could not be found.
解决:yum install iptables-services
9.java的安装:
下载java:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
从windows把tar包上传至/usr/local/source中:上传用rz命令
解压: tar xvzf jdk-8u181-linux-x64.tar.gz
把文件移至/usr/local中:mv /usr/local/source/jdk1.8.0_181 /usr/local/jdk1.8.0_181
环境变量配置:vim /etc/profile添加:
#Java Env
export JAVA_HOME=/usr/local/jdk1.8.0_181
export CLASSPATH=.:
J
A
V
A
H
O
M
E
/
l
i
b
/
d
t
.
j
a
r
:
JAVA_HOME/lib/dt.jar:
JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin
执行 source /etc/profile
10.假分布式配置
把zookeeper下conf文件中的zoo_example.cfg更名为zoo1.cfg,再新建zoo2.cfg zoo3.cfg。配置内容如下:
zoo1.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hadoop/tmp/zookeeper/zk1
clientPort=2181
server.1=master:2888:3888
server.2=master:2889:3889
server.3=master:2890:3890
zoo2.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hadoop/tmp/zookeeper/zk2
clientPort=2182
server.1=master:2888:3888
server.2=master:2889:3889
server.3=master:2890:3890
zoo3.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hadoop/tmp/zookeeper/zk3
clientPort=2183
server.1=master:2888:3888
server.2=master:2889:3889
server.3=master:2890:3890
Zookeeper真分布部署在master、slave1、slave2 三台不同的服务器上
server1…/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hadoop/tmp/zookeeper/zk
clientPort=2181
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
server2…/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hadoop/tmp/zookeeper/zk
clientPort=2181
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
server3…/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hadoop/tmp/zookeeper/zk
clientPort=2181
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
注意:要把config下的zoo_example.cfg更名成zoo.cfg,如果存在俩个cfg文件status会报错
11.myid必须手动建立且指定在zk数据目录,也就是dataDir指定的路径(不管真分布还是伪分布都需要指定)
$ echo 1 >> /home/hadoop/tmp/zookeeper/zk1/myid
$ echo 2 >> /home/hadoop/tmp/zookeeper/zk2/myid
$ echo 3 >> /home/hadoop/tmp/zookeeper/zk3/myid
12.zookeeper启动不了解决:
1.查看防火墙状态:service iptables status。如果执行报错参考第七条。如果是激活状态,service iptables stop关闭
2.查看conf下的zookeeper.out文件中的报错:根据各种报错信息进行修正,例如java没装,端口冲突等,
配置时可能会报master:
java.net.UnknownHostException: master
at java.net.InetAddress.getAllByName0(InetAddress.java:1280)
at java.net.InetAddress.getAllByName(InetAddress.java:1192)
at java.net.InetAddress.getAllByName(InetAddress.java:1126)
at java.net.InetAddress.getByName(InetAddress.java:1076)
at org.apache.zookeeper.server.quorum.QuorumPeer$QuorumServer.recreateSocketAddresses(QuorumPeer.java:180)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:591)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:610)
at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:838)
at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:957)
2018-09-18 17:25:29,676 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:FastLeaderElection@847] - Notification time out: 60000
在C:\Windows\System32\drivers\etc中hosts文建中加入:127.0.0.1 master。
未解决的问题:在配置伪分布式时status的状态一直是not running。但用ps -ef | grep zookeeper命令使可以看到线程时存在的,我感觉是因为在一个config下面不能存在多个cfg文件有关。目前不知道具体原因。