Zookeeper分布式安装配置过程

7 篇文章 0 订阅
7 篇文章 0 订阅

前言

  • 集群主机:hadoop101、hadoop102、hadoop103
  • 操作系统:CentOS 7
  • Zookeeper版本:3.4.14
  • JDK版本:1.8.0_221
  • 所有配置操作都必须在同一用户下

1. 下载Zookeeper

Zookeeper官网提供的镜像网站上下载合适版本,本次下载的版本是3.4.14
  • 下载Zookeeper

  • 下载Zookeeper

  • 下载Zookeeper


2. 安装Zookeeper

直接使用普通用户将压缩包解压到目标路径下即可,本次解压路径为/opt/module/,具体命令如下:
[tomandersen@hadoop101 software]$ tar -xzvf zookeeper-3.4.14.tar.gz -C /opt/module/

注意:本次实验中此路径已经使用root用户将所有权给了用户tomandersen,默认是root用户才能访问,如果要使用相同路径,记得先排查确保文件所属用户,避免后续因为权限而出现混乱。为了避免麻烦,建议使用自定义路径


3. 配置conf/zoo.cfg

1)将conf文件夹下的zoo_sample.cfg文件更名为zoo.cfg

[tomandersen@hadoop101 software]$ mv zoo_sample.cfg zoo.cfg

2)然后编辑zoo.cfg,修改其中参数,具体参数可参考如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/module/zookeeper-3.4.14/zkData
dataLogDir=/opt/module/zookeeper-3.4.14/logs/transaction
clientPort=2181
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
# The zookeeper cluster setting
server.1=hadoop101:2888:3888
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888

其中需要特别说明的参数:

  • dataLogDir:在默认的配置中并没有此参数的相关描述,但在官方文档中描述到,此参数用于设置 事务日志(transaction log) 存放路径,将dataLogDirdataDir设置于不同存储设备对于Zookeeper的吞吐率有较大影响。所以这里即便是没有设置多余的设备用于存储日志,也建议将其分开存储
  • autopurge.snapRetainCountautopurge.purgeInterval:这两个参数配合起来就是在每间隔1个小时清洗一次快照snapshot和对应的事务日志transaction log,只保存最新的三个版本的快照和其对应的事务日志
  • server.<myid>=<host>:2888:3888:此参数专门用于设置Zookeeper集群,其中<myid>指的是zookeeper服务器ID,主要通过dataDir路径下的myid文件来确定,此文件需要自己手动创建,文件中内容只能有对应服务器ID,不能有任何多余内容。<host>则指的是zookeeper服务器主机ip,由于此前已经在/etc/hosts中设置了映射,所有此处直接使用设置的主机名hadoop101 hadoop102 hadoop103,其中28883888分别指的是zookeeper集群仲裁模式(完全分布式)下LeaderFollower通信端口,以及zookeeper集群选取Leader时各个服务器之间的通信端口

4. 设置myid

官方文档原文:

  • You attribute the server id to each machine by creating a file named myid, one for each server, which resides in that server’s data directory, as specified by the configuration file parameter dataDir.
  • The myid file consists of a single line containing only the text of that machine’s id. So myid of server 1 would contain the text “1” and nothing else. The id must be unique within the ensemble and should have a value between 1 and 255. IMPORTANT: if you enable extended features such as TTL Nodes (see below) the id must be between 1 and 254 due to internal limitations.

总而言之:

  • 文件myid必须在dataDir路径下,其中内容只能是单个整数,且myid的值必须与zoo.cfg中的配置相对应,myid的值必须在1~255之间,且唯一

1)在dataDir路径下创建myid:

[tomandersen@hadoop101 zookeeper-3.4.14]$ echo 1 > zkData/myid

2)将zookeeper文件夹分发给集群主机:

[tomandersen@hadoop101 module]$ scp -r zookeeper-3.4.14/ hadoop102:/opt/module/
[tomandersen@hadoop101 module]$ scp -r zookeeper-3.4.14/ hadoop103:/opt/module/

这里可以写个分发脚本,因为本次实验集群数量较少,所以直接手敲了

3)分别设置集群各个主机的myid:

这里就不再赘述了,设置方式和规则与前述相同


5. 配置群起脚本

1)Zookeeper中没有设置群起脚本,需要自行编写。本次使用ssh工具来实现远程调用zkServer脚本启动Zookeeper集群。具体可参考如下:

  1 #!/bin/bash
  2 # 此脚本用于启动zookeeper集群,使用方式和zkServer.sh相同
  3 
  4 # 判断输入参数个数
  5 if (($# != 1)); then
  6     echo "Wrong parameters!"
  7     exit 1
  8 fi
  9 # 获取当前用户
 10 user=$(whoami)
 11 # 集群的ip地址
 12 cluster="hadoop101 hadoop102 hadoop103"
 13 
 14 # 根据输入参数调用对应功能
 15 case $1 in
 16 "start")
 17     for host in $cluster; do
 18         ssh $user@$host "source /etc/profile;$ZOOKEEPER_HOME/bin/zkServer.sh start"
 19     done
 20     ;;
 21 "status")
 22     for host in $cluster; do
 23         ssh $user@$host "source /etc/profile;$ZOOKEEPER_HOME/bin/zkServer.sh status"
 24     done
 25     ;;
 26 "stop")
 27     for host in $cluster; do
 28         ssh $user@$host "source /etc/profile;$ZOOKEEPER_HOME/bin/zkServer.sh stop"
 29     done
 30     ;;
 31 *)
 32     echo "Worong parameter!"
 33     exit 1
 34     ;;
 35 esac

注意:其中环境变量$ZOOKEEPER_HOME已经在/etc/profile中配置为zookeeper对应安装路径

2)运行群起脚本,测试集群是否正常运行

  • 启动集群
[tomandersen@hadoop101 bin]$ zkCluster-server.sh start
  • 查看集群状态
[tomandersen@hadoop101 bin]$ zkCluster-server.sh status
  • 关闭集群
[tomandersen@hadoop101 bin]$ zkCluster-server.sh stop

如果启动失败,可以查看启动脚本的当前路径下的zookeeper.out文件,其中记录有错误原因。此文件为Zookeeper的运行日志。相关zookeeper日志介绍可以参考:Zookeeper中日志文件种类


End~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值