大数据之Zookeeper安装

一、Zookeeper 简介

1.1 什么是Zookeeper

Zookeeper就其本质,是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。

看一眼官网描述,其为高可靠的分布式协调工具,注意是分布式协调,不是分布式存储,因此不用期望在Zookeeper上面可以存储很多数据
zookeeper01.png

1.2 Zookeeper角色

# ZK集群角色
Leader领导者:
  1.处理事物请求(增删改)
  2.集群内部各服务器的调度者

Follower跟随者:
  1.处理客户端非事物请求(查询),转发事物请求给Leader服务器
  2.参与Leader选举投票

Observer观察者(分担Follower压力):
  1.处理客户端非事物请求(查询),转发事物请求给Leader服务器

二、Zookeeper的下载

下载地址: https://www.bokexie.com/archive.apache.org/dist/zookeeper/

zookeeper02.png

本次演示版本为 : zookeeper-3.6.3

准备工作 : JDK 1.8
服务器 : 
zk01             zk02            zk03         
192.168.87.201   192.168.87.202  192.168.87.203

三、Zookeeper的安装

3.1 解压

# 解压压缩包
tar -xf apache-zookeeper-3.6.3-bin.tar.gz -C /apps
cd /apps 
ls
cd zookeeper-3.6.3
ll
# 目录介绍 zkData 是我手动创建的,用于存放数据,后面配置文件中会介绍
drwxr-xr-x 2 1000 1000   289 Apr  9  2021 bin      # 执行命令脚本
drwxr-xr-x 2 1000 1000    92 Jul 21 13:18 conf     # 配置文件目录
drwxr-xr-x 5 1000 1000  4096 Apr  9  2021 docs     # 文档目录
drwxr-xr-x 2 root root  4096 Jul 21 13:00 lib      # 依赖包目录
drwxr-xr-x 2 root root    71 Jul 21 13:16 logs     # 日志目录
drwxr-xr-x 3 root root    35 Aug 16 18:36 zkData   # 数据目录

zookeeper04.png

3.2 配置

3.2.1 修改配置文件

# 拷贝模板文件,文件名称必须为:zoo.cfg
cp /apps/zookeeper-3.6.3/conf/zoo_sample.cfg /apps/zookeeper-3.6.3/conf/zoo.cfg
# 修改 zoo.cfg
# 修改存储数据路径
dataDir=/apps/zookeeper-3.6.3/zkData
# 添加服务列表
server.1=zk01:2888:3888
server.2=zk02:2888:3888
server.3=zk03:2888:3888

zookeeper05.png
Zookeeper重要参数

Zookeeper中的配置文件zoo.cfg中参数含义解读如下:
1.tickTime =2000:通信心跳数,Zookeeper服务器与客户端心跳时间,单位毫秒,Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。(session的最小超时时间是2*tickTime)
2.initLimit =10:LF初始通信时限,集群中的Follower跟随者服务器与Leader领导者服务器之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限。
3.syncLimit =5:LF同步通信时限,集群中Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer。
4.dataDir:数据文件目录+数据持久化路径,主要用于保存Zookeeper中的数据。
5.clientPort =2181:客户端连接端口,监听客户端连接的端口。

3.2.2 myid文件创建

# 在zkData目录下添加 myid 文件,写入数字 1 ,或者其他什么的,标识唯一标识
cd /apps/zookeeper-3.6.3/zkData
echo 1 > myid

3.2.3 分发

# 由于分发比较常见,因此我创建了一个分发脚本,一键分发,内容如下
vim /mybin/msync.sh
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍历集群所有机器
for host in zk01 zk02 zk03
do
  echo ====================  $host  ====================
  #3. 遍历所有目录,挨个发送
  for file in $@
  do
    #4 判断文件是否存在
    if [ -e $file ]
    then
      #5. 获取父目录
      pdir=$(cd -P $(dirname $file); pwd)
      #6. 获取当前文件的名称
      fname=$(basename $file)
      ssh $host "mkdir -p $pdir"
      rsync -av $pdir/$fname $host:$pdir
    else
      echo $file does not exists!
    fi
  done
done
# 赋权后,即可进行分发

cd /apps
mysync zookeeper-3.6.3
# 记得修改 myid 文件,分别修改为 2 3 即可

四、Zookeeper的启动

# 由于zookeeper 启停 比较常见,因此我创建了一个启停脚本,一键分发,内容如下
vim /mybin/zk.sh

#!/bin/bash
case $1 in
"start"){
    for i in zk01 zk02 zk03
    do
        echo ---------- zookeeper $i 启动 ------------
        ssh $i "/apps/zookeeper-3.6.3/bin/zkServer.sh start"
    done
};;
"stop"){
    for i in zk01 zk02 zk03
    do
        echo ---------- zookeeper $i 停止 ------------    
        ssh $i "/apps/zookeeper-3.6.3/bin/zkServer.sh stop"
    done
};;
"status"){
    for i in zk01 zk02 zk03
    do
        echo ---------- zookeeper $i 状态 ------------    
        ssh $i "/apps/zookeeper-3.6.3/bin/zkServer.sh status"
    done
};;
esac
# 赋权后即可启动
/mybin/zk.sh start
/mybin/zk.sh status

zookeeper06.png

# 将Zookeeper配置环境变量,则可以任何位置运行 zkCli.sh 客户端脚本
vim /etc/profile
export ZOOKEEPER_HOME=/apps/zookeeper-3.6.3
export PATH=$PATH:$ZOOKEEPER_HOME/bin
get /zookeeper/config 

zookeeper07.png

五、结束语

更多精彩内容,欢迎来到博客蟹博客,博客蟹 http://www.bokexie.com

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值