7.Linux虚拟机下ZooKeeper的全分布式安装和常见问题

Hadoop及相关组件搭建指导WeChat:h19396218469
hadoop-3.1.3
jdk-8u162-linux-x64
hbase-2.2.2-bin
zookeeper-3.4.6

本案例软件包:链接:https://pan.baidu.com/s/1ighxbTNAWqobGpsX0qkD8w
提取码:lkjh(若链接失效在下面评论,我会及时更新)
使用hbase启动顺序:zookeeper->hadoop->hbase
关闭:hbase->hadoop->zookeeper
命令(写过脚本的脚本编写):
xzk-start.sh
hadoop.sh start
start-hbase.sh

一、Zookeeper的全分布式模式安装

1、使用xftp将安装包上传到虚拟机的Downloads目录,解压ZooKeeper(xftp的使用可以在主页寻找)

cd
cd Downloads   #切换到目标文件夹
sudo tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local/   #将文件解压到目标目录

2、切换到/usr/local/文件夹,将zookeeper-3.4.6重命名为zookeeper

cd /usr/local/
sudo mv zookeeper-3.4.6 zookeeper

3、配置Zookeeper环境变量

sudo vi /etc/profile

在最下面添加如下行内容

export ZOOKEEPER_HOME=/usr/local/zookeeper #存放位置可以更改
export PATH=$PATH:$ZOOKEEPER_HOME/bin

4、使环境变量生效

source /etc/profile

5、将/usr/local/zookeeper/conf/zoo_sample.cfg重命名为zoo.cfg(ZooKeeper的配置文件

cd /usr/local/zookeeper/conf/
sudo mv zoo_sample.cfg zoo.cfg

6、修改Zookeeper的配置文件zoo.cfg

sudo vi /usr/local/zookeeper/conf/zoo.cfg

将dataDir修改为如下内容

dataDir=/usr/local/zookeeper/zkdata

在文件末尾添加如下内容

server.1=masterIP的地址:2888:3888  #其中master slave01 slave02为我hadoop集群中三台虚拟机的主机名 可以去 /etc/hosts中查看
server.2=slave01的地址:2888:3888
server.3=slave02的地址:2888:3888

其中”1“,”2“,”3“使myid,要求是1~255的整数。
2888是Leader端口,负责和Follower进行通信。
3888是Follower端口,负责推选Leader。

7、新建/usr/local/zookeeper/zkdata,在该目录下新建文件myid

sudo mkdir /usr/local/zookeeper/zkdata
sudo vi /usr/local/zookeeper/zkdata/myid

在文件中填写如下内容

1

8、将/usr/local/zookeeper分发到虚拟机slave01和slave02

sudo scp -r /usr/local/zookeeper/ slave01:/usr/local
sudo scp -r /usr/local/zookeeper/ slave02:/usr/local

9、赋予权限

在master,slave01,slave02分别执行以下代码

sudo chown -R hadoop /usr/local/zookeeper

10、修改slave01的/usr/local/zookeeper/zkdata/myid

sudo vi /usr/local/zookeeper/zkdata/myid

将其中的内容替换成

2

11、修改slave02的/usr/local/zookeeper/zkdata/myid

sudo vi /usr/local/zookeeper/zkdata/myid

将其中的内容替换成

3

12、将master虚拟机的环境变量分发到虚拟机slave01 slave02

sudo scp /etc/profile slave01:/etc/profile
sudo scp /etc/profile slave02:/etc/profile

13、分别使slave01 slave02的环境变量生效

分别在slave01和slave02执行以下命令

source /etc/profile

14、启动Zookeeper的服务器

分别在三台虚拟机执行以下代码

zkServer.sh start

15、检查Zookeeper服务器是否启动

(1)查看Zookeeper服务器的启动状态

zkServer.sh status

出现如下表示即为Zookeeper启动成功

(2)使用jps命令查看Zookeeper进程是否启动

jps

在这里插入图片描述
出现QuorumPeerMain进程表明Zookeeper进程启动成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、编写脚本

由于每次启动和关闭Zookeeper集群都要在三台虚拟机分别进行,效率较低,我们可以在master节点编写启动脚本

1、在master虚拟机下的/usr/local/zookeeper/bin目录下新建xzk-start.sh脚本文件,内容如下:

#!/bin/sh
for host in master slave01 slave02
do
echo "---------------------------------------------------------------------------"
 ssh $host "source /etc/profile;zkServer.sh start"
 echo "$host zk is started"
done
echo "---------------------------------------------------------------------------"

2、新建xzk-stop.sh脚本文件,内容如下:

#!/bin/sh
for host in master slave01 slave02
do
echo "---------------------------------------------------------------------------"
 ssh $host "source /etc/profile;zkServer.sh stop"
 echo "$host zk is stop"
done
echo "---------------------------------------------------------------------------"

3、新建xzk-status.sh脚本文件,内容如下

#!/bin/sh
for host in master slave01 slave02
do
echo "---------------------------------------------------------------------------"
 ssh $host "source /etc/profile;zkServer.sh status"
 echo "$host's status"
done
echo "---------------------------------------------------------------------------"

4、为xzk-start.sh,xzk-stop.sh,xzk-status.sh脚本添加权限

chomd u+x xzk-start.sh
chomd u+x xzk-status.sh
chomd u+x xzk-stop.sh

5、通过脚本在虚拟机master上同时启动,关闭虚拟机

xzk-start.sh  #开启
xzk-stop.sh   #关闭
xzk-status.sh  #查看状态

出现如下内容即为正确
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、常见问题

1、当启动成功,查看zookeeper状态失败

可以用以下命令查看启动日志

zkServer.sh start-foreground

如果出现如下提示
java.net.BindException: Address already in use
说明端口被占用,通过如下命令检查端口2181

netstat -nltp | grep 2181

如果有则把对应的进程用如下命令kill

kill -9 进程
  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值