1.引言
在前面的博客中介绍了Zookeeper
的伪分布部署,在本篇博客中主要介绍一下Zookeeper
的集群部署,在本篇博客中使用三台机器部署Zookeeper
集群,如下表所示:
HOST 名称 | ip 地址 | 运行的进程 |
---|---|---|
hadoop1 | 192.168.159.130 | QuorumPeerMain |
hadoop2 | 192.168.159.131 | QuorumPeerMain |
hadoop3 | 192.168.159.132 | QuorumPeerMain |
本博客的安装环境为:
zookeeper
的版本为:3.4.9
zookeeper
的安装目录为:/usr/local/zookeeper
jdk
的版本为:1.7
jdk
的安装目录为:/usr/local/jdk
2. Zookeeper
集群部署
2.1 修改hostname
- 在
hadoop1
机器上修改hostname
//编辑文件
vim /etc/sysconfig/network
//修改主机名是hadoop1,(注意hostname的大小写)
hostname hadoop1
//命令行下修改hostname
hostname hadoop1
- 同理在
hadoop2,hadoop3
执行相同的命令,如下图所示
2.2 建立hostname
和ip
的映射关系
为了部署集群方便,因此我们建立了ip
和主机名称的映射,过程如下:
- 修改
/etc/hosts
文件
//编辑hosts文件
vim /etc/hosts
//建立ip和host的映射关系
192.168.159.130 hadoop1
192.168.159.131 hadoop2
192.168.159.132 hadoop3
- 同理在
hadoop2,hadoop3
也要建立ip和host的映射关系,过程和hadoop1
完全相同。
2.3 关闭防火墙
在hadoop
集群中会经常发生 机器和机器之间的交互,为了避免因为防火墙产生的意外故障,因此我们需要将防火墙关闭,过程如下:
//关闭防火墙
service iptables stop
//查看防火墙状态
service iptables status
//关闭防火墙的自动运行
chkconfig iptables off
2.4 SSH
免密码登陆
zookeeper
集群的ssh
免密码登陆不和hadoop
一样,hadoop
只需要实现namenode
向datanode
实现免密码登陆即可,而zookeeper
的免密码登陆需要相互实现(很重要)。
- 在
Hadoop1
创建公钥和私钥,实现hadoop2
和hadoop3
的免密码登陆
//创建密钥,一直点确定到结束
ssh-keygen -t rsa
//将hadoop1的公钥复制到其他节点。
ssh-copy-id -i hadoop2
ssh-copy-id -i hadoop3
- 在
Hadoop2
创建公钥和私钥,然后实现hadoop1
和hadoop3
的免密码登陆
//创建密钥,一直点确定到结束
ssh-keygen -t rsa
//将hadoop1的公钥复制到其他节点。
ssh-copy-id -i hadoop1
ssh-copy-id -i hadoop3
- 在
Hadoop3
创建公钥和私钥,然后实现hadoop1
和hadoop2
的免密码登陆
//创建密钥,一直点确定到结束
ssh-keygen -t rsa
//将hadoop1的公钥复制到其他节点。
ssh-copy-id -i hadoop1
ssh-copy-id -i hadoop2
2.5 安装JDK
如果操作系统本身已经安装了java
环境,那么本步骤就可以忽略。
- 解压
jdk
,并修改名称
//将jdk解压到/usr/local
tar -zxvf jdk-7u45-linux-x64.tar.gz -C /usr/local/
//进入到/usr/local
cd /usr/local
//修改文件夹的名称
mv jdk1.7.0_45 jdk
- 修改环境变量
//修改配置文件
vim /etc/profile
//需要添加的内容
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- 将
hadoop1
的jdk
复制到其他节点
//将jdk复制到hadoop2,hadoop3,hadoop4,hadoop5
scp -r /usr/local/jdk hadoop2:/usr/local/
scp -r /usr/local/jdk hadoop3:/usr/local/
//将环境变量复制到hadoop2,hadoop3,hadoop4,hadoop5
scp /etc/profile hadoop2:/etc/profile
scp /etc/profile hadoop3:/etc/profile
- 重新加载各个节点的环境变量
//分别在hadoop1,hadoop2,hadoop3执行下面命令(在五台机器上都执行)
source /etc/profile
- 分别在三台机器上验证Java是否安装成功
//判断Java版本
java -version
2.6 zookeeper集群安装
- 解压
zookeeper
,并改名
//解压zookeeper安装包
tar -zxvf zookeeper-3.4.9.tar.gz -C /usr/local/
//进入到/usr/local目录
cd /usr/local
//修改文件夹名称
mv zookeeper-3.4.9 zookeeper
- 修改配置文件
zoo.cfg
//将模板文件修改为配置文件
cp conf/zoo_sample.cfg conf/zoo.cfg
//zoo.cfg的内容修改为:
dataDir=/usr/local/zookeeper/data
clientPort=2181
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888
- 创建数据存储目录并标记
//创建数据存储目录
mkdir -p /usr/local/zookeeper/data
//将hadoop1标记为server.1
echo '1'>/usr/local/zookeeper/data/myid
- 将zookeeper分发到hadoop2和hadoop3
//将zookeeper分发到hadoop2
scp -r /usr/local/zookeeper hadoop2:/usr/local
//将zookeeper分发到hadoop3
scp -r /usr/local/zookeeper hadoop3:/usr/local
- 在hadoop2和hadoop3上打标记
//在hadoop2上执行,将hadoop2标记为server.2
echo '2'>/usr/local/zookeeper/data/myid
//在hadoop3上执行,将hadoop3标记为server.3
echo '3'>/usr/local/zookeeper/data/myid
- 在三个节点分别启动zookeeper
bin/zkServer.sh start
- 查看zookeeper是否启动成功(
jps
查看)
- 查看zookeeper是否启动成功(
bin/zkServer.sh status
查看,此命令可以查看zookeeper
实例的角色)