文章目录
前言
- 介绍在虚拟机hadoop1、hadoop2和hadoop3部署完全分布式Zookeeper
- 配置zookeeper配置文件
- 配置zookeeper环境变量
- 启动zookeeper及查看zookeeper集群状态
- 提供shell脚本自动化安装zookeeper完全分布式
一、Zookeeper完全分布式部署(手动部署)
1. 下载Zookeeper
点击下载zookeeper3.7.0安装包:https://archive.apache.org/dist/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
2. 上传安装包
通过拖移的方式将下载的zookeeper安装包apache-zookeeper-3.7.0-bin.tar.gz上传至虚拟机hadoop1的/export/software目录。
3. 解压zookeeper安装包
在虚拟机hadoop1上传完成后将zookeeper安装包通过解压方式安装至/export/servers目录。
tar -zxvf /export/software/apache-zookeeper-3.7.0-bin.tar.gz -C /export/servers/
重命名
在虚拟机hadoop1把解压后的安装目录apache-zookeeper-3.7.0-bin重命名为zookeeper-3.7.0,重命名是为了简化路径,其次是为了标准化命名。
mv /export/servers/apache-zookeeper-3.7.0-bin /export/servers/zookeeper-3.7.0
4. 配置zookeeper配置文件
4.1 创建 zoo.cfg 配置文件
在虚拟机hadoop1通过复制Zookeeper的模板配置文件zoo_sample.cfg创建配置文件zoo.cfg。
cp /export/servers/zookeeper-3.7.0/conf/zoo_sample.cfg /export/servers/zookeeper-3.7.0/conf/zoo.cfg
4.2 修改 zoo.cfg 配置文件
在虚拟机hadoop1修改 zoo.cfg 配置文件,执行如下命令修改和添加配置文件内容。
cat>/export/servers/zookeeper-3.7.0/conf/zoo.cfg <<EOF
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/export/data/zookeeper/zkdata
clientPort=2181
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888
EOF
4.3 创建数据持久化目录并创建myid文件
在虚拟机hadoop1创建数据持久化目录并创建myid文件。
mkdir -p /export/data/zookeeper/zkdata
echo1> /export/data/zookeeper/zkdata/myid
在虚拟机hadoop2创建数据持久化目录并创建myid文件。
mkdir -p /export/data/zookeeper/zkdata
echo2> /export/data/zookeeper/zkdata/myid
在虚拟机hadoop3创建数据持久化目录并创建myid文件。
mkdir -p /export/data/zookeeper/zkdata
echo3> /export/data/zookeeper/zkdata/myid
5. 虚拟机hadoop2安装并配置Zookeeper
在虚拟机hadoop1使用scp命令把虚拟机hadoop1的zookeeper的安装目录复制到虚拟机hadoop2的相同目录下,就相当于在hadoop2安装并配置了zookeeper。
scp -r /export/servers/zookeeper-3.7.0/ hadoop2:/export/servers/
6. 虚拟机hadoop3安装并配置Zookeeper
在虚拟机hadoop1使用scp命令把虚拟机hadoop1的zookeeper的安装目录复制到虚拟机hadoop3的相同目录下,就相当于在hadoop3安装并配置了zookeeper。
scp -r /export/servers/zookeeper-3.7.0/ hadoop3:/export/servers/
7. 配置Zookeeper系统环境变量
7.1 配置虚拟机hadoop1的Zookeeper环境变量
在虚拟机hadoop1使用
echo
命令向环境变量配置文件
/etc/profile
追加环境变量内容。
echo>> /etc/profile
echo'export ZK_HOME=/export/servers/zookeeper-3.7.0'>> /etc/profile
echo'export PATH=$PATH:$ZK_HOME/bin'>> /etc/profile
配置环境变量后,需要使用如下命令加载环境变量配置文件/etc/profile,使用Zookeeper的环境变量生效。
source /etc/profile
7.2 配置虚拟机hadoop2的Zookeeper环境变量
在虚拟机hadoop2使用
echo
命令向环境变量配置文件
/etc/profile
追加环境变量内容。
echo>> /etc/profile
echo'export ZK_HOME=/export/servers/zookeeper-3.7.0'>> /etc/profile
echo'export PATH=$PATH:$ZK_HOME/bin'>> /etc/profile
配置环境变量后,需要使用如下命令加载环境变量配置文件/etc/profile,使用Zookeeper的环境变量生效。
source /etc/profile
7.3 配置虚拟机hadoop3的Zookeeper环境变量
在虚拟机hadoop3使用
echo
命令向环境变量配置文件
/etc/profile
追加环境变量内容。
echo>> /etc/profile
echo'export ZK_HOME=/export/servers/zookeeper-3.7.0'>> /etc/profile
echo'export PATH=$PATH:$ZK_HOME/bin'>> /etc/profile
配置环境变量后,需要使用如下命令加载环境变量配置文件/etc/profile,使用Zookeeper的环境变量生效。
source /etc/profile
8. 启动Zookeeper集群
在虚拟机hadoop1执行如下命令启动zookeeper。
zkServer.sh start
在虚拟机hadoop2执行如下命令启动zookeeper。
zkServer.sh start
在虚拟机hadoop3执行如下命令启动zookeeper。
zkServer.sh start
9. 查看Zookeeper集群状态
在虚拟机hadoop1执行如下命令查看Zookeeper集群状态是否正常。
zkServer.sh status
在虚拟机hadoop2执行如下命令查看Zookeeper集群状态是否正常。
zkServer.sh status
在虚拟机hadoop3执行如下命令查看Zookeeper集群状态是否正常。
zkServer.sh status
如果集群启动正常如上图所示,会有一个领导者leader,两个跟随者follower。
若要停止Zookeeper集群运行,依次在虚拟机hadoop1、hadoop2和hadoop3执行如下命令停止Zookeeper服务。
zkServer.sh stop
二、使用shell脚本自动部署Zookeeper完全分布式(选看)
1. 下载Zookeeper
点击下载zookeeper3.7.0安装包:https://archive.apache.org/dist/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
2. 上传安装包
通过拖移的方式将下载的zookeeper安装包apache-zookeeper-3.7.0-bin.tar.gz上传至虚拟机hadoop1的/export/software目录。
3. 使用shell脚本自动部署Zookeeper完全分布式
3.1 创建 hadoop1_zookeeper_install_config.sh 脚本文件并添加脚本内容
在虚拟机hadoop1上创建
hadoop1_zookeeper_install_config
脚本文件
touch /export/shell/hadoop1_zookeeper_install_config.sh
添加如下内容:
#!/bin/bash# 定义常量ZK_VER="3.7.0"ZK_BIN_TAR="apache-zookeeper-${ZK_VER}-bin.tar.gz"ZK_DATA_DIR="/export/data/zookeeper/zkdata"DATA_DIR="/export/data"SOFTWARE_DIR="/export/software"SERVERS_DIR="/export/servers"# 如果数据持久化目录存在则删除if[ -d "${ZK_DATA_DIR}"];thenecho"删除 Hadoop1 的数据持久化目录 ${ZK_DATA_DIR}..."rm -rf ${ZK_DATA_DIR}fissh root@hadoop2 \"
if [ -d \"${ZK_DATA_DIR}\" ]; then
echo \"删除 Hadoop2 的数据持久化目录 ${ZK_DATA_DIR}...\"
rm -rf ${ZK_DATA_DIR}
fi
exit
"ssh root@hadoop3 \"
if [ -d \"${ZK_DATA_DIR}\" ]; then
echo \"删除 Hadoop3 的数据持久化目录 ${ZK_DATA_DIR}...\"
rm -rf ${ZK_DATA_DIR}
fi
exit
"# 检查zookeeper是否已解压if[ -d "${SERVERS_DIR}/apache-zookeeper-${ZK_VER}-bin"];thenecho"zookeeper安装程序已存在,正在删除原安装程序目录..."rm -rf "${SERVERS_DIR}/apache-zookeeper-${ZK_VER}-bin"fiif[ -d "${SERVERS_DIR}/zookeeper-${ZK_VER}"];thenecho"zookeeper安装程序已存在,正在删除原安装程序目录..."rm -rf "${SERVERS_DIR}/zookeeper-${ZK_VER}"fi# 检查zookeeper安装包是否存在if[ -f ${SOFTWARE_DIR}/${ZK_BIN_TAR}];thenecho"zookeeper安装包存在,正在解压安装包..."# 解压zookeeper安装包tar -zxvf ${SOFTWARE_DIR}/${ZK_BIN_TAR} -C ${SERVERS_DIR}echo"解压 ${SOFTWARE_DIR}/${ZK_BIN_TAR} 到 ${SERVERS_DIR} 目录成功"elseecho"zookeeper安装包不存在,请先上传安装包到 ${SOFTWARE_DIR} 目录"exit1fi# 重命名mv${SERVERS_DIR}/apache-zookeeper-${ZK_VER}-bin ${SERVERS_DIR}/zookeeper-${ZK_VER}if[$? -eq 0];thenecho"${SERVERS_DIR}/apache-zookeeper-${ZK_VER}-bin 重命名为 ${SERVERS_DIR}/zookeeper-${ZK_VER} 成功"elseecho"${SERVERS_DIR}/apache-zookeeper-${ZK_VER}-bin 重命名为 ${SERVERS_DIR}/zookeeper-${ZK_VER}失败,请检查"exit1fi# 创建zoo.cfg配置文件cp${SERVERS_DIR}/zookeeper-${ZK_VER}/conf/zoo_sample.cfg ${SERVERS_DIR}/zookeeper-${ZK_VER}/conf/zoo.cfg
if[$? -eq 0];thenecho"ZooKeeper 配置文件 zoo.cfg 创建成功"elseecho"ZooKeeper 配置文件 zoo.cfg 创建失败,请检查"exit1fi# 修改zoo.cfg配置文件内容cat>${SERVERS_DIR}/zookeeper-${ZK_VER}/conf/zoo.cfg <<EOF
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/export/data/zookeeper/zkdata
clientPort=2181
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888
EOFecho"${SERVERS_DIR}/zookeeper-${ZK_VER}/conf/zoo.cfg 配置文件修改成功"# 创建数据持久化目录并创建myid文件mkdir -p /export/data/zookeeper/zkdata
echo1> /export/data/zookeeper/zkdata/myid
if[$? -eq 0];thenecho'Hadoop1 创建数据持久化目录并创建 myid 文件成功'elseecho'Hadoop1 创建数据持久化目录并创建 myid 文件失败,请检查'exit1fissh root@hadoop2 \"
mkdir -p /export/data/zookeeper/zkdata
echo 2 > /export/data/zookeeper/zkdata/myid
if [ $? -eq 0 ]; then
echo 'Hadoop2 创建数据持久化目录并创建 myid 文件成功'
else
echo 'Hadoop2 创建数据持久化目录并创建 myid 文件失败,请检查'
fi
exit
"ssh root@hadoop3 \"
mkdir -p /export/data/zookeeper/zkdata
echo 3 > /export/data/zookeeper/zkdata/myid
if [ $? -eq 0 ]; then
echo 'Hadoop3 创建数据持久化目录并创建 myid 文件成功'
else
echo 'Hadoop3 创建数据持久化目录并创建 myid 文件失败,请检查'
fi
exit
"# 配置ZooKeeper系统环境变量if[ -n "$ZK_HOME"];thenecho"Hadoop1 ZooKeeper 环境变量已配置:$ZK_HOME"elseecho>> /etc/profile
echo'export ZK_HOME=/export/servers/zookeeper-3.7.0'>> /etc/profile
echo'export PATH=$PATH:$ZK_HOME/bin'>> /etc/profile
echo"Hadoop1 ZooKeeper 环境变量配置成功"fi# 分发环境变量配置文件到hadoop2scp /etc/profile root@hadoop2:/etc/
if[$? -eq 0];thenecho"分发 /etc/profile 到 hadoop2 的 /etc 目录成功"elseecho"分发 /etc/profile 到 hadoop2 的 /etc 目录失败,请检查"exit1fi# 分发环境变量配置文件到hadoop3scp /etc/profile root@hadoop3:/etc/
if[$? -eq 0];thenecho"分发 /etc/profile 到 hadoop3 的 /etc 目录成功"elseecho"分发 /etc/profile 到 hadoop3 的 /etc 目录失败,请检查"exit1fi# 分发安装程序到hadoop2scp -r ${SERVERS_DIR}/zookeeper-${ZK_VER} root@hadoop2:${SERVERS_DIR}/
if[$? -eq 0];thenecho"分发 ${SERVERS_DIR}/zookeeper-${ZK_VER} 到 hadoop2 的 ${SERVERS_DIR} 目录成功"elseecho"分发 ${SERVERS_DIR}/zookeeper-${ZK_VER} 到 hadoop2 的 ${SERVERS_DIR} 目录失败,请检查"exit1fi# 分发安装程序到hadoop3scp -r ${SERVERS_DIR}/zookeeper-${ZK_VER} root@hadoop3:${SERVERS_DIR}/
if[$? -eq 0];thenecho"分发 ${SERVERS_DIR}/zookeeper-${ZK_VER} 到 hadoop3 的 ${SERVERS_DIR} 目录成功"elseecho"分发 ${SERVERS_DIR}/zookeeper-${ZK_VER} 到 hadoop3 的 ${SERVERS_DIR} 目录失败,请检查"exit1fiecho -e "\n-----zookeeper 完全分布式安装配置完成-----\n"echo -e "1. 依次在虚拟机Hadoop1、Hadoop2和Hadoop3执行命令 \e[31msource /etc/profile\e[0m 加载环境变量\n"echo -e "2. 依次在虚拟机Hadoop1、Hadoop2和Hadoop3启动ZooKeeper服务:\e[31mzkServer.sh start\e[0m\n"echo -e "3. 依次在虚拟机Hadoop1、Hadoop2和Hadoop3查看ZooKeeper服务状态:\e[31mzkServer.sh status\e[0m\n"echo -e "若要停止ZooKeeper集群运行,依次在虚拟机Hadoop1、Hadoop2和Hadoop3停止ZooKeeper服务: \e[31mzkServer.sh stop\e[0m"exit0
3.2 添加可执行权限
在虚拟机hadoop1上给脚本文件
/export/shell/hadoop1_hadoop_install_config.sh
添加可执行权限。
chmod +x /export/shell/hadoop1_zookeeper_install_config.sh
3.3 执行脚本
在虚拟机hadoop1上执行脚本文件自动化安装配置zookeeper完全分布式。
/export/shell/hadoop1_zookeeper_install_config.sh
执行完成如下图所示。
4. 加载环境变量
根据使用shell脚本自动安装完成后的提示依次在虚拟机hadoop1、hadoop2和hadoop3执行如下命令加载环境变量。
source /etc/profile
5. 启动Zookeeper集群
在虚拟机hadoop1执行如下命令启动zookeeper。
zkServer.sh start
在虚拟机hadoop2执行如下命令启动zookeeper。
zkServer.sh start
在虚拟机hadoop3执行如下命令启动zookeeper。
zkServer.sh start
6. 查看Zookeeper集群状态
在虚拟机hadoop1执行如下命令查看Zookeeper集群状态是否正常。
zkServer.sh status
在虚拟机hadoop2执行如下命令查看Zookeeper集群状态是否正常。
zkServer.sh status
在虚拟机hadoop3执行如下命令查看Zookeeper集群状态是否正常。
zkServer.sh status
如果集群启动正常如上图所示,会有一个领导者leader,两个跟随者follower。
若要停止Zookeeper集群运行,依次在虚拟机hadoop1、hadoop2和hadoop3执行如下命令停止Zookeeper服务。
zkServer.sh stop
版权归原作者 BigDataMagician 所有, 如有侵权,请联系我们删除。