1、Zookeeper基本安装配置

该项的所有操作步骤使用专门用于集群的用户admin进行

此项只在一台主机操作,然后在下一步骤进行同步安装与配置

首先,Zookeeper软件包“Zookeeper-3.4.9.tar.gz”,上节课已经上传到用户家目录的“setups”目录下。

然后进行解压和环境变量设置

$mkdir ~/zookeeper #创建用户存放Zookeeper相关文件的目录

$cd ~/zookeeper #进入该目录

$tar -xzf ~/setups/zookeeper-3.4.9.tar.gz #将软件包解压

hadoop zookeeper作用 hadoop中zookeeper_hadoop zookeeper作用


$vi ~/.bash_profile #配置Zookeeper相关的环境变量

hadoop zookeeper作用 hadoop中zookeeper_zookeeper_02


对配置文件进行修改,在文件末尾添加以下内容:

#zookeeper environment

ZOOKEEPER_HOME=/home/admin/zookeeper/zookeeper-3.4.9

#在路径以Zookeeper软件包实际解压解包的路径为准

PATH= $ZOOKEEPER_HOME/bin: $PATH #确保此项输入正确,否则可能会导致所有命令无法使用

Export ZOOKEEPER_HOMEPATH #必须按照前面的定义顺序书写

hadoop zookeeper作用 hadoop中zookeeper_bash_03


$source ~/.bash_profile #使新配置的环境变量立即生效

hadoop zookeeper作用 hadoop中zookeeper_hadoop zookeeper作用_04


$echo $ZOOKEEPER_HOME

$echo $PATH #查看新添加和修改的环境变量是否设置成功,以及环境变量的值是否正确

hadoop zookeeper作用 hadoop中zookeeper_hadoop zookeeper作用_05


2、Zookeeper完全分布模式配置

此项的所有操作步骤使用专门用于集群用户admin进行

$cd ~/zookeeper #进入Zookeeper相关文件的目录

$mkdir data logs #分别创建用于存放数据文件的目录“data”和用于存放日志文件的目录“logs”

hadoop zookeeper作用 hadoop中zookeeper_环境变量_06


$cd ~/zookeeper/zookeeper-3.4.9/conf #进入Zookeeper的配置文件所在的目录

$cp zoo_sample zoo.cfg #拷贝生成Zookeeper的配置文件

hadoop zookeeper作用 hadoop中zookeeper_环境变量_07


$vi zoo.cfg #对配置文件进行修改

hadoop zookeeper作用 hadoop中zookeeper_hadoop zookeeper作用_08


以下配置项若已经存在则修改其对应值,若不存在则在配置文件末尾进行添加:

dataDIR=/home/admon/zookeeper/data

dataLogDir=/home/admon/zookeeper/logs

Server.1=Cluster-01:2888:3888

Server.2=Cluster-02:2888:3888

Server.3=Cluster-03:2888:3888

Server.4=Cluster-04:2888:3888

Server.5=Cluster-05:2888:3888

hadoop zookeeper作用 hadoop中zookeeper_环境变量_09


3、同步安装和配置

该项的所有操作步骤使用专门用于集群用户admin进行

将“zookeeper”目录和“.bash_profile”文件发给集群中所有主机,发送目标用户为集群专用用户admin,发送目标路径为“/home/admin”,即集群专用用户admin的家目录。然后每台执行source ~/.bash_profile使环境变量生效

$scp -r ~/zookeeper ~/.bash_profile admin@Cluster-02:/home/admin
$scp -r ~/zookeeper ~/.bash_profile admin@Cluster-03:/home/admin
$scp -r ~/zookeeper ~/.bash_profile admin@Cluster-04:/home/admin
$scp -r ~/zookeeper ~/.bash_profile admin@Cluster-05:/home/admin

在每台主机会虚拟机上,使用命令“echo $ZOOKEEPER_HOME”、“echo $PATH”查看新添加和修改的环境变量是否设置成功,以及环境变量的值是否正确。如在主机Cluster-02上验证:

$source ~/.bash_profile #使新配置的环境变量立即生效

hadoop zookeeper作用 hadoop中zookeeper_zookeeper_10


$echo $ZOOKEEPER_HOME

$echo $PATH #查看新添加和修改的环境变量是否设置成功,以及环境变量的值是否正确

hadoop zookeeper作用 hadoop中zookeeper_zookeeper_11


4、配置Zookeeper节点标识文件

该项的所有操作步骤使用专门用于集群用户admin进行

在集群中所有主机上使用命令“echo ” *“ > ~/zookeeper/data/myid”,创建Zookeeper的节点标识文件

如在主机Cluster-01中,配置Zookeeper节点标识文件,如下所示:

$echo ‘1’ > ~/zookeeper/data/myid

hadoop zookeeper作用 hadoop中zookeeper_zookeeper_12


$cat zoo.cfg

hadoop zookeeper作用 hadoop中zookeeper_zookeeper_13


hadoop zookeeper作用 hadoop中zookeeper_bash_14


5、Zookeeper完全分布模式启动和验证

该项的所有操作步骤使用专门用于集群用户admin进行

进行操作前,先关闭防火墙(root用户下):

#systemctl stop firewalld.service

#systemctl disable firewalld.service

如在主机Cluster-01上关闭防火墙,其他主机一样,在操作前需关闭防火墙

hadoop zookeeper作用 hadoop中zookeeper_hadoop zookeeper作用_15


在集群中所有主机上使用命令“zkServer.sh start”启动Zookeeper服务的脚本,若启动过程没有报错,

并且显示“STARTED”则表示启动成功。

$zkServer.sh start

hadoop zookeeper作用 hadoop中zookeeper_hadoop zookeeper作用_16


在集群中所有主机上使用命令“jps”查看Java进程信息,若存在一个名为“QuorumPeerMain”的进程,则表示Zookeeper服务启动成功。 $jps

hadoop zookeeper作用 hadoop中zookeeper_bash_17


在集群中所有主机上使用命令“zkServer.sh status”查看该节点Zookeeper服务当前的状态,若集群中只有一个“leader”节点,其余的均匀为“follwer”节点,则集群的工作状态正常。防火墙必须关掉,状态是Error contacting service.It is probably not running.。

$zkServer.sh status

hadoop zookeeper作用 hadoop中zookeeper_环境变量_18


使用命令“zkCli.sh -server Cluster- *:2181”利用Zookeeper的命令行工具连接Zookeeper集群,其中

" *"为集群中节点的编号,可以选择连接集群中任意一个节点,若显示“CONNECTED”则表示连接正常,命令行工具可以正常使用,在命令行工具中使用命令“quit”可以退出工具程序。如在主机Cluster-01利用命令行工具连接Zookeeper集群,如下所示:

$zkCli.sh -server Cluster-01:2181

hadoop zookeeper作用 hadoop中zookeeper_hadoop zookeeper作用_19


hadoop zookeeper作用 hadoop中zookeeper_zookeeper_20


问题及解决方法:

防火墙未关闭成功

CentOS 7.0 默认使用的是firewall作为防火墙,需执行以下命令关闭防火墙:

$systemctl stop firewalld.service #停止firewall

$systemctl disable firewalld.service #禁止firewall开机启动

关闭各个节点防火墙后,重启Zookeeper进程,防火墙关闭成功