相关文章

一、环境准备

准备3台虚拟机

  • Hadoop131:192.168.56.131
  • Hadoop132:192.168.56.132
  • Hadoop133:192.168.56.133

本例系统版本 CentOS-7.8,已安装jdk1.8

关闭防火墙

systemctl stop firewalld

二、zookeeper安装配置

1、zookeeper下载安装

1) 下载解压

# 下载
wget --no-check-certificate https://dlcdn.apache.org/zookeeper/zookeeper-3.9.1/apache-zookeeper-3.9.1-bin.tar.gz
# 解压安装
tar -xzvf apache-zookeeper-3.9.1-bin.tar.gz

mv apache-zookeeper-3.9.1-bin/ /data/zookeeper/
#查看zookeeper是否部署成功;
ls -l /data/zookeeper/

2)配置服务器编号

创建数据存储目录 zkdata

mkdir /data/zookeeper/zkdata

在zkdata 目录创建文件 myid,在文件中添加与server对应的编号

131

3)配置zoo.cfg文件

zookeeper/conf目录下有zoo_sample.cfg实例配置文件,复制这个文件,重命名为zoo.cfg,开始配置zoo.cfg的内容

cp zoo_sample.cfg zoo.cfg
vi zoo.cfg

修改数据存储路径

dataDir=/data/zookeeper/zkdata

增加如下集群配置

############### cluster ###############
server.131=hadoop131:2888:3888
server.132=hadoop132:2888:3888
server.133=hadoop133:2888:3888

集群服务配置说明

server.A=B:C:D
A 是一个数字,表示这个是第几号服务器;
B 是这个服务器的IP地址(或者是与IP地址做了映射的主机名);
C 第一个端口用来集群成员的信息交换,表示这个服务器与集群中的Leader服务器交换信息的端口;
D 是在leader挂掉时专门用来进行选举leader所用的端口。

2、同步zookeeper到其他服务器

1)同步zookeeper到其他两台服务器 hadoop132、hadoop133

xsync.sh /data/zookeeper/

2)分别修改 hadoop132、hadoop133 上面的 myid 为 132、133

3、集群操作

方式一:分别在各个服务器操作

1)分别启动zookeeper

/data/zookeeper/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

2)查看状态

/data/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

方式二:增加集群操作脚本 zk.sh

1)创建文件zk.sh

vi /usr/bin/zk.sh
# 修改文件权限
chmod 777 /usr/bin/zk.sh

2)复制如下内容

#!/bin/bash

#1. 判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

case $1 in
"start")
	#遍历集群所有机器
	for host in hadoop131 hadoop132 hadoop133
	do
		echo --------------------  $host zookeeper 启动 --------------------
		ssh $host "/data/zookeeper/bin/zkServer.sh start"
	done
;;
"stop")
	#遍历集群所有机器
	for host in hadoop131 hadoop132 hadoop133
	do
		echo --------------------  $host zookeeper 停止 --------------------
		ssh $host "/data/zookeeper/bin/zkServer.sh stop"
	done
;;
"status")
	#遍历集群所有机器
	for host in hadoop131 hadoop132 hadoop133
	do
		echo --------------------  $host zookeeper 状态 --------------------
		ssh $host "/data/zookeeper/bin/zkServer.sh status"
	done
;;
*)
	echo "Input Args Error..."
;;
esac

3)通过集群脚本 zk.sh 操作

zk.sh start
-------------------- hadoop131 zookeeper 启动 --------------------
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
-------------------- hadoop132 zookeeper 启动 --------------------
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
-------------------- hadoop133 zookeeper 启动 --------------------
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

三、ZooKeeper常见配置参数

ZooKeeper的配置参数主要包括以下几项:

  1. tickTime:ZooKeeper中的一个时间单元,用于服务器之间或客户端与服务器之间维持心跳。它是以毫秒为单位的,并且ZooKeeper中所有的时间都是以这个为基础进行整数倍的配置。例如,session的最小超时时间是2倍的tickTime。

  2. dataDir:存储快照的目录。这也是ZooKeeper服务器用来存储事务日志的默认位置(如果没有特别配置dataLogDir的话)。考虑到事务日志的写入性能会直接影响到ZooKeeper的整体性能,因此建议将事务日志存储在一个专门的、拥有良好I/O性能的磁盘上。

  3. dataLogDir:这个参数用于配置事务日志的存储目录。如果配置了这个参数,那么事务日志就会被存储在这个指定的目录中,而不是在dataDir中。这有助于优化磁盘I/O性能。

  4. clientPort:这是客户端连接ZooKeeper服务器的端口。一般来说,这个端口被设置为2181。

  5. initLimit:这是ZooKeeper集群中的Follower服务器与Leader服务器之间初始连接时能容忍的最多心跳数(以tickTime为单位)。这个参数用于控制ZooKeeper集群的初始化过程。

  6. syncLimit:这是ZooKeeper集群中的Follower服务器与Leader服务器之间请求和应答之间能容忍的最多心跳数(以tickTime为单位)。这个参数用于控制Follower和Leader之间的同步过程。

  7. maxClientCnxns:这是一个客户端连接到单个ZooKeeper服务器的最大连接数限制。这个参数可以防止ZooKeeper服务器因为过多的客户端连接而耗尽资源。

这些参数都可以在ZooKeeper的配置文件(zoo.cfg)中进行设置。在配置ZooKeeper集群时,还需要设置一些其他的参数,如server.x配置项,用于指定ZooKeeper集群中的服务器地址和端口等信息。

参考

  • https://zookeeper.apache.org/doc/current/index.html
Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐