Hadoop(二)之实验一CentOS7配置Hadoop系统:安装Zookeeper3.4.14


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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值