zookeeper有单机、伪集群、集群三种部署方式,可根据自己实际情况选择合适的部署方式。下边对这三种部署方式逐一进行讲解。 一 单机模式1.下载 进入要下载的版本的目录,选择.tar.gz文件下载 2.上传安装包到usr/local目录下,并解压缩,重命名,配置环境变量 [root@hadoop ~]# cd /usr/local/ [root@hadoop local]# tar xzvf zookeeper-3.4.9.tar.gz #解压缩 [root@hadoop local]# mv zookeeper-3.4.9 zookeeper #重命名 [root@hadoop local]# vi /etc/profile #添加环境变量 添加变量:export ZOO_HOME=/usr/local/zookeeper 然后在PATH变量后面添加::$ZOO_HOME/bin [root@hadoop local]# source /etc/profile #生成环境变量 3.配置zookeeper。将配置模板生成为配置文件,生成dataDir目录,修改参数 [root@hadoop local]# cd /usr/local/zookeeper/conf [root@hadoop conf]# ls configuration.xsl log4j.properties zoo_sample.cfg [root@hadoop conf]# cp zoo_sample.cfg zoo.cfg #生成配置文件 [root@hadoop conf]# mkdir -p /usr/local/zookeeper/data #生成dataDir目录 [root@hadoop conf]# vi zoo.cfg #添加如下参数 dataDir=/usr/local/zookeeper/data #已有,修改即可 dataLogDir=/usr/local/zookeeper/data/log server.1=hadoop:2888:3888 附zoo.cfg文件
View Code
4.在dataDir目录下生成myid文件 [root@hadoop conf]# echo 1 > /usr/local/zookeeper/data/myid #单机模式只有一台机器,故它是集群中的1号机器
5.开启zookeeper集群节点 [root@hadoop conf]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
6.检查集群状态或者节点角色 [root@hadoop conf]# jps #出现QuorumPeerMain代表zookeeper正常运转 116422 Jps 116254 QuorumPeerMain [root@hadoop conf]# zkServer.sh status #单机模式,只有一种角色standalone ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Mode: standalone 7.关闭zookeeper集群节点 [root@hadoop conf]# zkServer.sh stop ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED [root@hadoop conf]# jps 116564 Jps [root@hadoop conf]# zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Error contacting service. It is probably not running.
二 伪集群模式伪集群模式就是在同一主机启动多个zookeeper并组成集群,下边以在hadoop主机上创建3个zookeeper组集群为例。 1.将通过单机模式安装的zookeeper,复制成zoo1/zoo2/zoo3三份 [root@hadoop ~]# mkdir /zoo [root@hadoop ~]# cp -r /usr/local/zookeeper /zoo/zoo1 [root@hadoop ~]# cp -r /usr/local/zookeeper /zoo/zoo2 [root@hadoop ~]# cp -r /usr/local/zookeeper /zoo/zoo3 [root@hadoop ~]# cd /zoo/ [root@hadoop zoo]# ls zoo1 zoo2 zoo3 2.分别修改3个节点的配置文件 [root@hadoop zoo]# vi /zoo/zoo1/conf/zoo.cfg #节点1 dataDir=/zoo/zoo1/data dataLogDir=/zoo/zoo1/data/log clientPort=2181 #由于我们用的同一个主机hadoop,为了防止端口冲突,设置端口号均不同 #如果是3个节点分别在3台机器上,端号可以一样 #此处主机名hadoop也可以写成主机IP地址 server.1=hadoop:2888:3888 server.2=hadoop:4888:5888 server.3=hadoop:6888:7888 [root@hadoop zoo]# vi /zoo/zoo2/conf/zoo.cfg #节点2 dataDir=/zoo/zoo2/data dataLogDir=/zoo/zoo2/data/log clientPort=2281 server.1=hadoop:2888:3888 server.2=hadoop:4888:5888 server.3=hadoop:6888:7888 [root@hadoop zoo]# vi /zoo/zoo3/conf/zoo.cfg #节点3 dataDir=/zoo/zoo3/data dataLogDir=/zoo/zoo3/data/log clientPort=2381 server.1=hadoop:2888:3888 server.2=hadoop:4888:5888 server.3=hadoop:6888:7888 3.分别修改3个节点的myid文件 [root@hadoop zoo]# echo 1 > /zoo/zoo1/data/myid [root@hadoop zoo]# echo 2 > /zoo/zoo2/data/myid [root@hadoop zoo]# echo 3 > /zoo/zoo3/data/myid 4.依次启动3个zookeeper集群节点
View Code
5.如何同时关闭zookeeper所有节点? [root@hadoop data]# kill -9 `ps -ef|grep zookeeper|awk '{print $2}'` #杀死进程
三 集群模式集群模式就是在不同主机上安装zookeeper然后组成集群的模式。安装方式与伪集群模式类似。下边以在hadoop/hadoop2/hadoop3三台主机上安装为例。 1.首先在hadoop主机上以单机模式安装zookeeper,然后将其打包复制到另外两台主机hadoop2和hadoop3上,并都解压到同样的目录下。 2.分别修改3个节点的配置文件 [root@hadoop ~]# vi /usr/local/zookeeper/conf/zoo.cfg #节点1,2,3均修改如下 #对于节点1,2,3,由于安装目录都一样,所以dataDir和dataLogDir不需要改变 #节点1,2,3分别在不同机器上,所以clientPort也不需要改变 dataDir=/usr/local/zookeeper/data dataLogDir=/usr/local/zookeeper/data/log clientPort=2281 #3个节点分别在3台机器上,端号可以一样 server.1=hadoop:2888:3888 server.2=hadoop2:2888:3888 server.3=hadoop3:2888:3888 3.分别修改3个节点的myid文件。3个节点的myid文件分别写入1,2,3,方法参考伪集群模式 附myid数字生成法(我没用这个脚本执行,大家感兴趣可以尝试)
View Code
4.分别启动3个zookeeper集群节点,方法参考伪集群模式 附zookeeper状态脚本 [root@hadoop ~]# cd /usr/local/zookeeper/bin/ [root@hadoop bin]# vi zoo_status.sh #!/bin/bash for i in `cat /etc/hosts|awk '{print $2}' | grep -v localhost` do ssh $i << EOF zkServer.sh status EOF done [root@hadoop bin]# chmod 777 zoo_status.sh [root@hadoop bin]# zoo_status.sh
|
|