搭建Zookeeper集群

因为工作需要,最近开始接触大数据技术,为了充分了解大数据,准备搭建一个大数据集群。出于对大数据处理流程和需要部署的相关组件的了解,决定跳出一般大数据学习思维,先将集群资源管理组件搭建起来,然后以资源管理组件为基础慢慢填充集群内容,所以搭建Zookeeper作为大数据学习的第一步。

一、下载Zookeeper

 官网下载地址:http://mirror.bit.edu.cn/apache/zookeeper/

搭建Zookeeper集群_第1张图片

因为不了解各个版本的区别,看网上大多都是用的3.4.14版本,考虑到遇到问题好找解决方案,所以决定用3.4.14版本。

由于zookeeper集群的运行需要Java运行环境,所以安装Zookeeper前需要首先安装 JDK,关于安装步骤,不再此处具体描述。

二、单机部署Zookeeper

1.解压Zookeeper-3.4.14压缩包

在 /usr/local 目录下新建 Zookeeper目录,然后将 zookeeper 压缩文件上传到该目录中,然后通过如下命令解压。

tar -zxvf zookeeper-3.4.14.tar.gz

2. 配置环境变量

vim /etc/profile
export ZOOKEEPER_HOME=/usr/app/zookeeper-3.4.14
export PATH=$ZOOKEEPER_HOME/bin:$PATH

使得配置的环境变量生效:

source /etc/profile

3.修改配置文件zoo.cfg

将zookeeper压缩文件解压后,进入到 conf 目录,将 zoo_sample.cfg 文件复制并重命名为 zoo.cfg 文件。

cp zoo_sample.cfg zoo.cfg

搭建Zookeeper集群_第2张图片

然后通过 vim zoo.cfg 命令对该文件进行修改:

搭建Zookeeper集群_第3张图片

上面红色框住的内容即是我们修改的内容:

 (1)tickTime:基本事件单元,这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳;最小 的session过期时间为2倍tickTime

 (2)dataDir:存储内存中数据库快照的位置,除非另有说明,否则指向数据库更新的事务日志。注意:应该谨慎的选择日志存放的位置,使用专用的日志存储设备能够大大提高系统的性能,如果将日志存储在比较繁忙的存储设备上,那么将会很大程度上影响系统性能。

 (3)client:监听客户端连接的端口。

 (4)initLimit:允许follower连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。

 (5)syncLimit:表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。

4.启动

由于已经配置过环境变量,直接使用下面命令启动即可:

zkServer.sh start

5.验证

使用 JPS 验证进程是否已经启动,出现 QuorumPeerMain 则代表启动成功。

三、集群部署Zookeeper

为保证集群高可用,Zookeeper 集群的节点数最好是奇数,最少有三个节点,所以这里演示搭建一个三个节点的集群。这里我使用三台主机进行搭建,主机名分别为 master,hadoop1,hadoop2。

1.修改zoo.cfg配置

搭建Zookeeper集群_第4张图片

# server.1 这个1是服务器的标识,可以是任意有效数字,标识这是第几个服务器节点,这个标识要写到dataDir目录下面myid文件里
# 指名集群间通讯端口和选举端口
server.1=master:2288:3388
server.2=hadoop1:2288:3388
server.3=hadoop2:2288:3388

2.标识节点

分别在三台主机的 dataDir 目录下新建 myid 文件,并写入对应的节点标识。Zookeeper 集群通过 myid 文件识别集群节点,并通过上文配置的节点通信端口和选举端口来进行节点通信,选举出 Leader 节点。

创建存储目录:

# 三台主机均执行该命令
mkdir -vp  /data/zookeeper/data/

创建并写入节点标识到 myid 文件:

# master主机
echo "1" > /data/zookeeper/data/myid
# hadoop1主机
echo "2" > /data/zookeeper/data/myid
# hadoop2主机
echo "3" > /data/zookeeper/data/myid

3.启动集群

分别在三台主机上,执行如下命令启动服务:

# 此命令可以在任何目录下执行,但是建议还是在zookeeper安装目录下,因为执行下面命令时会在当前目录下生成一个zookeeper.out文件,该文件为日志文件,可以根据文件内容查看启动运行过程,方便问题查找。
zkServer.sh start

4.集群验证

分别在三台主机上,执行如下命令验证启动是否成功。

zkServer.sh status 

查看集群各个节点状态。如图所示:三个节点进程均启动成功,并且 master 为 leader 节点,hadoop1 和 hadoop2 为 follower 节点。

.四、遇到的问题及解决方案

搭建过程中遇到的主要问题就是三个节点可以单独启动,但是无法实现通信,无法通信便无法选出leader。针对搭建过程中出现的问题,最有效的解决方法就是查看日志文件。zookeeper日志文件目录在dataDir配置的目录下,文件名为:zookeeper.out。通过查看日志来解决相应的问题。

.针对我遇到的zookeeper集群出现 Error contacting service. It is probably not running 问题主要是因为防火墙阻止了通讯,只要关闭防火墙就可以了。

firewalld 和IPtables的关闭方法:

firewalld(一般是centos7以及以上):

临时关闭: systemctl stop firewalld.service

查看状态:systemctl status firewalld.service

开机禁用(需要重启生效):systemctl disable firewalld.service

IPtables(centos6之前的):

暂时关闭防火墙:(立即生效,开机重启,会重新打开) 
service iptables stop 
永久关闭防火墙(关机重启才会生效) 
chkconfig iptables off

如果是centos7里面,那就要换一种写法了:

systemctl stop iptables.service 其他一样的

 

你可能感兴趣的:(大数据)