Hadoop运维--Zookeeper--安装配置

一、服务规划

服务器 IP地址 软件 服务 备注
master 192.168.71.130 zookeeper QuorumPeerMain follower
slave1 192.168.71.129 zookeeper QuorumPeerMain leader
slave2 192.168.71.132 zookeeper QuorumPeerMain follower

二、ZooKeeper安装配置

下载地址:https://zookeeper.apache.org/releases.html

  1. 前置条件
    安装JDK
  2. 下载zookeeper
# 下载zookeeper
root@master:~# wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
# 解压文件
root@master:~# tar -zxvf zookeeper-3.4.14.tar.gz -C /usr/local
# 配置环境变量
root@master:~# vi /etc/profile
# 内容
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_HOME/bin
# 环境变量生效
root@master:~# source /etc/profile

  1. zookeepe配置
# 创建文件(复制模板)
root@master:~# cp /zookeeper/zookeeper-3.4.12/conf/zoo_sample.cfg /zookeeper/zookeeper-3.4.12/conf/zoo.cfg
# 修改配置:
root@master:~# vi /zookeeper/zookeeper-3.4.12/conf/zoo.cfg

# 内容
tickTime=2000
syncLimit=5
dataDir=/zookeeper/tmp
clientPort=2181

属性说明:
tickTime:时长单位为毫秒,为zk使用的基本时间度量单位。
例如:
1 * tickTime是客户端与zk服务端的心跳时间,2 * tickTime是客户端会话的超时时间。
tickTime的默认值为2000毫秒,更低的tickTime值可以更快地发现超时问题,但也会导致更高的网络流量(心跳消息)和更高的CPU使用率(会话的跟踪处理)。
syncLimit:配置follower和leader之间发送消息,请求和应答的最大时间长度。
clientPort:zk服务进程监听的TCP端口,默认情况下,服务端会监听2181端口。
dataDir:无默认配置,必须配置,用于配置存储快照文件的目录。如果没有配置dataLogDir,那么事务日志也会存储在此目录。

dataDir=/zookeeper/data

其配置的含义跟单机模式下的含义类似,不同的是集群模式下还有一个myid文件。myid文件的内容只有一行,且内容只能为1 - 255之间的数字,这个数字亦即上面介绍server.id中的id,表示zk进程的id。
dataLogDir:

dataLogDir=/zookeeper/datalog

在集群模式下,所有的zk进程可以使用相同的配置文件(是指各个zk进程部署在不同的机器上面)。

# 主机名, 心跳端口、数据端口)(2888是leader和follow之间通信,3888是投票选举时用的端口)
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

其中id为一个数字,表示zk进程的id,这个id也是dataDir目录下myid文件的内容。
host是该zk进程所在的IP地址,port1表示follower和leader交换消息所使用的端口,port2表示选举leader所使用的端口。

  1. 创建日志与数据目录
# 创建data和datalog两个目录
root@master:~# mkdir -p /zookeeper/data
root@master:~# mkdir -p /zookeeper/datalog

# 打包分发文件
root@master:/usr/local# tar -cvf zookeeper.tar zookeeper-3.4.14/
root@master:/usr/local# scp zookeeper.tar root@slave1:/root
root@master:/usr/local# scp zookeeper.tar root@slave2:/root

  1. 创建myid文件
    需在每台主机配置,注意:值为配置文件中server中的值
root@master:~# cd /zookeeper/data
root@master:/zookeeper/data# echo 1 > myid
root@slave1:/zookeeper/data# echo 2 > myid
root@slave2:/zookeeper/data# echo 3 > myid

注意:myid文件一定要放在dataDir目录 下。

三、启动测试

# 启动ZK服务
root@master:/# zkServer.sh start
root@slave2:~# zkServer.sh start
root@slave1:~# zkServer.sh start
#  分别查看三个节点的状态,可以看到一个leader和两个follower,说明zookeeper安装成功。
root@slave2:/usr/local/zookeeper-3.4.14# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: leader
root@slave1:/usr/local/zookeeper-3.4.14# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: follower
root@master:/usr/local/zookeeper-3.4.14#  ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: follower

# 停止服务
root@slave1:~# zkServer.sh stop
# 重启ZK服务
root@slave1:~# zkServer.sh restart

四、常见问题:

  1. 异常解决:Error contacting service. It is probably not running.
# 前台运行查看错误信息
root@slave1:/usr/local/zookeeper-3.4.14# ./bin/zkServer.sh start-foreground

你可能感兴趣的:(Hadoop运维--Zookeeper--安装配置)