文章目录
Hadoop(一)之实验一CentOS7配置Hadoop系统:配置CentOS和下载安装包
Hadoop(二)之实验一CentOS7配置Hadoop系统:安装Zookeeper3.4.14
Hadoop(三)之实验一CentOS7配置Hadoop系统:安装 Hadoop3.1.2
Hadoop(四)之实验一CentOS7配置Hadoop系统:启动Hadoop
二、安装程序
5.Zookeeper3.4.14
(1)配置文件并复制Zookeeper3.4.14
【只在c0上】
修改配置文件 zoo.cfg
创建 /home/work/_app/zookeeper-3.4.14/conf/zoo.cfg
文件编辑并保存,内容如下:
touch /home/work/_app/zookeeper-3.4.14/conf/zoo.cfg
gedit /home/work/_app/zookeeper-3.4.14/conf/zoo.cfg
编辑该文件,将以下内容写入:
# ZooKeeper使用的基本时间单位(以毫秒为单位)。它用于做心跳,最小会话超时将是tickTime的两倍。
tickTime=200
# 存储内存数据库快照的位置,除非另有说明,否则指向数据库更新的事务日志。
dataDir=/home/work/_data/zookeeper-3.4.14
# 用于事务日志的不同目录。
dataLogDir=/home/work/_logs/zookeeper-3.4.14
# 侦听客户端连接的端口
clientPort=2181
# 表示在leader选举结束后,followers与leader同步需要的时间,如果followers比较多或者说leader的数据灰常多时,同步时间相应可能会增加,那么这个值也需要相应增加。当然,这个值也是follower和observer在开始同步leader的数据时的最大等待时间(setSoTimeout)
initLimit=5
# 表示follower和observer与leader交互时的最大等待时间,只不过是在与leader同步完毕之后,进入正常请求转发或ping等消息交互时的超时时间。
syncLimit=2
# server.serverid=host:tickpot:electionport
# server:固定写法
# serverid:每个服务器的指定ID(必须处于1-255之间,必须每一台机器不能重复)
# host:主机名
# tickpot:心跳通信端口
# electionport:选举端口
server.1=c0:2888:3888
server.2=c1:2888:3888
server.3=c2:2888:3888
server.4=c3:2888:3888
将 zookeeper 复制到其他机器上
for N in $(seq 1 3); do scp -r /home/work/_app/zookeeper-3.4.14 c$N:/home/work/_app/; done;
(2)为每台服务器创建身份标识
通过创建名为 myid
的文件将每台服务器标识身份,每个服务器对应一个文件,用于服务器快速选举,该文件位于配置文件 /home/work/_app/zookeeper-3.4.14/conf/zoo.cfg
中的 dataDir 配置项中。
接下来,我们在配置文件 /home/work/_app/zookeeper-3.4.14/conf/zoo.cfg
中配置的 dataDir 目录,创建 myid
文件,内容为 server.
后面的数字,记住只能是数字:
# c0
[root@c0 ~]# echo 1 > /home/work/_data/zookeeper-3.4.14/myid
# c1
[root@c1 ~]# echo 2 > /home/work/_data/zookeeper-3.4.14/myid
# c2
[root@c2 ~]# echo 3 > /home/work/_data/zookeeper-3.4.14/myid
# c3
[root@c3 ~]# echo 4 > /home/work/_data/zookeeper-3.4.14/myid
(3)在所有节点中启动 zookeeper
在典型部署中,ZooKeeper 守护程序配置为在三个或五个节点上运行。由于 ZooKeeper 本身具有轻量级资源要求,因此可以在与 HDFS NameNode 和备用节点相同的硬件上配置 ZooKeeper 节点。
许多运营商选择在与 YARN ResourceManager 相同的节点上部署第三个ZooKeeper 进程。建议将ZooKeeper 节点配置为将数据存储在与 HDFS 元数据不同的磁盘驱动器上,以获得最佳性能和隔离。
接下来我们在所有机器上运行 zkServer.sh start 命令启动服务,然后输入 JPS 命令,在所有节点中,您将看到 QuorumPeerMain 服务。
【只在c0上】:
for N in $(seq 0 3); do ssh c$N zkServer.sh start; done;
for N in $(seq 0 3); do ssh c$N jps; done;
[root@c0 ~]# for N in $(seq 0 3); do ssh c$N zkServer.sh start; done;
ZooKeeper JMX enabled by default
Using config: /home/work/_app/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
ZooKeeper JMX enabled by default
Using config: /home/work/_app/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
ZooKeeper JMX enabled by default
Using config: /home/work/_app/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
ZooKeeper JMX enabled by default
Using config: /home/work/_app/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@c0 ~]# for N in $(seq 0 3); do ssh c$N jps; done;
14020 Jps
13980 QuorumPeerMain
13922 QuorumPeerMain
13957 Jps
13681 Jps
13639 QuorumPeerMain
4541 QuorumPeerMain
4575 Jps
Zookeeper 的停止命令为:zkServer.sh stop (不是说这里就要执行这条命令)
(4)查看zookeeper 运行状态
通过 zkServer.sh status 命令,可以看到在 c2 上是 leader,其他机器是 follower【每个人的机子结果可能不一样,都ok】
【c0上】
for N in $(seq 0 3); do ssh c$N zkServer.sh status; done;
[root@c0 ~]# for N in $(seq 0 3); do ssh c$N zkServer.sh status; done;
ZooKeeper JMX enabled by default
Using config: /home/work/_app/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: follower
ZooKeeper JMX enabled by default
Using config: /home/work/_app/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: follower
ZooKeeper JMX enabled by default
Using config: /home/work/_app/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: leader
ZooKeeper JMX enabled by default
Using config: /home/work/_app/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: follower
【问题:如果报错Error contacting service. It is probably not running
】
如果你之前就是按我的配置走的,还出现这个问题,那就是多打几遍这个。
我也出现了这种情况,多打即便启动就ok了。(可能因为虽然显示Starting zookeeper ... already running...
或者STARTED
,但其实没有执行?)
for N in $(seq 0 3); do ssh c$N zkServer.sh start; done;
for N in $(seq 0 3); do ssh c$N jps; done;
(5)测试 Zookeeper 是否启动成
使用ZK CLI进行连接来验证,是否安装成功
zkCli.sh
[root@c0 _src]# zkCli.sh
Connecting to localhost:2181
2019-11-04 19:44:08,980 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT
2019-11-04 19:44:08,985 [myid:] - INFO [main:Environment@100] - Client environment:host.name=c0
2019-11-04 19:44:08,985 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_221
2019-11-04 19:44:09,010 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2019-11-04 19:44:09,011 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/opt/jdk1.8.0_221/jre
2019-11-04 19:44:09,011 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/home/work/_app/zookeeper-3.4.14/bin/../zookeeper-server/target/classes:/home/work/_app/zookeeper-3.4.14/bin/../build/classes:/home/work/_app/zookeeper-3.4.14/bin/../zookeeper-server/target/lib/*.jar:/home/work/_app/zookeeper-3.4.14/bin/../build/lib/*.jar:/home/work/_app/zookeeper-3.4.14/bin/../lib/slf4j-log4j12-1.7.25.jar:/home/work/_app/zookeeper-3.4.14/bin/../lib/slf4j-api-1.7.25.jar:/home/work/_app/zookeeper-3.4.14/bin/../lib/netty-3.10.6.Final.jar:/home/work/_app/zookeeper-3.4.14/bin/../lib/log4j-1.2.17.jar:/home/work/_app/zookeeper-3.4.14/bin/../lib/jline-0.9.94.jar:/home/work/_app/zookeeper-3.4.14/bin/../lib/audience-annotations-0.5.0.jar:/home/work/_app/zookeeper-3.4.14/bin/../zookeeper-3.4.14.jar:/home/work/_app/zookeeper-3.4.14/bin/../zookeeper-server/src/main/resources/lib/*.jar:/home/work/_app/zookeeper-3.4.14/bin/../conf:
2019-11-04 19:44:09,011 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2019-11-04 19:44:09,011 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2019-11-04 19:44:09,011 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=<NA>
2019-11-04 19:44:09,011 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux
2019-11-04 19:44:09,011 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64
2019-11-04 19:44:09,012 [myid:] - INFO [main:Environment@100] - Client environment:os.version=3.10.0-1062.el7.x86_64
2019-11-04 19:44:09,012 [myid:] - INFO [main:Environment@100] - Client environment:user.name=root
2019-11-04 19:44:09,012 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/root
2019-11-04 19:44:09,012 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/home/work/_src
2019-11-04 19:44:09,013 [myid:] - INFO [main:ZooKeeper@442] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@446cdf90
2019-11-04 19:44:09,115 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1025] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)
Welcome to ZooKeeper!
JLine support is enabled
2019-11-04 19:44:09,431 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@879] - Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
2019-11-04 19:44:09,548 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x1000043f0280000, negotiated timeout = 4000
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 1] quit
Quitting...
2019-11-04 19:44:29,275 [myid:] - INFO [main:ZooKeeper@693] - Session: 0x1000043f0280000 closed
2019-11-04 19:44:29,278 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@522] - EventThread shut down for session: 0x1000043f0280000