【博学谷学习记录】超强总结,用心分享|Zookeeper入门-part01

官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

简单来说zookeeper=文件系统+监听通知机制。

学习Zookeeper框架的目的

1、Zookeeper是作为大数据生态圈框架中非常重要的一员
2、Zookeeper单独使用没有意义,主要是用来管理其他框架,被称为动物管理员(因为大数据框架很多都用动物来做logo)
3、后期Hadoop的高可用框架、Kafka都需要依赖Zookeeper

Zookeeper框架概述

1、Zookeeper本身是一个分布式集群
2、Zookeeper是协调服务框架,用来协调其他框架,让其他框架能够和睦的正常的工作
3、Zookeeper本身可以看做是一个数据库,是可以存数据的(冗余存储),一般存储的都是配置信息
4、Zookeeper集群满足过半机制,最坏情况下只有有超过一半的机器在工作,这个集群就能正常运转

Zookeeper框架特点

1、全局数据一致性,ZK中只要有一个服务器有数据,其他的主机会跟着进行数据同步,所有主机的数据都完全一样,不会出现有的主机有数据,有的主机没有数据,数据同步失败回进行回滚。

2、顺序性:某一台主机比如创建了两个节点,创建顺序是A,B,其他的主机创建顺序也一定是A,B

3、时效性:在ZK集群创建节点这个过程所消耗的时间是近乎实时的

4、数据更新原子性:一次数据更新要么成功(半数以上节点成功),要么失败,不存在中间状态;

Zookeeper集群的角色

  • Leader

1、集群的管理者,管理集群
2、Leader既可以处理写请求(事务操作),也处理读请求(非事务操作)
  • Follower(正式工)

1、集群的从角色
2、Follower只能处理读请求(非事务操作),如果收到客户端的写请求,则必须转发给Leader
3、各个Follower要不断的给Leader发送心跳包,告知其状态
4、如果Leader挂掉,则会从剩余的Follower中重新选举出新的Leader,有投票权
  • Observer(临时工、外包工)

1.观察者角色
2.Oberser使用的比较少,除了不能选举新Leader之外,和Follower没有任何区别,类似被剥夺政治权利

Zookeeper的Znode节点特性

1、ZK的Znode节点是一个树形结构,最上边是根/节点
2、ZK的Znode节点既像文件(存数据),又像文件夹(可以有子节点)
3、ZK的Znode一般用来存储配置信息,数据量不会太大,每个Znode节点最多不超过1M数据
4、ZK的Znode节点必须使用绝对路径来访问,不能使用相对路径

Zookeeper的Znode节点类型

PERSISTENT:永久节点
#不依赖当前会话,节点永远存在,除非手动删除

EPHEMERAL: 临时节点
#不依赖当前会话,节点永远存在,除非手动删除,会在节点名字的后边加上一串数字,数字越大,表示节点越新
#同一条创建命令多次创建不会失败

PERSISTENT_SEQUENTIAL:永久节点、序列化(顺序)
#依赖当前创建该节点的终端会话,如果会话(session)在,则节点在,如果会话消失,则节点消失

EPHEMERAL_SEQUENTIAL: 临时节点、序列化(顺序)
#依赖当前创建该节点的终端会话,如果会话(session)在,则节点在,如果会话消失,则节点消失
#会在节点名字的后边加上一串数字,数字越大,表示节点越新,同一条创建命令多次创建不会失败

Zookeeper的Znode节点的属性

mZxid :Znode被修改的事务id,即每次对znode的修改都会更新mZxid。

ephemeralOwner:如果该节点为临时节点, ephemeralOwner值表示与该节点绑定的session id. 如果不是, ephemeralOwner值为0.

Zookeeper框架的部署

1.部署包下载

http://archive.apache.org/dist/zookeeper/

2.解压部署包

cd /export/software
tar -zxvf zookeeper-3.4.6.tar.gz -C /export/server/

3.修改配置文件

cd /export/server/zookeeper-3.4.6/conf/
cp zoo_sample.cfg zoo.cfg
mkdir -p /export/server/zookeeper-3.4.6/zkdatas/
vim  zoo.cfg
#Zookeeper的数据存放目录
dataDir=/export/server/zookeeper-3.4.6/zkdatas
# 保留多少个快照
autopurge.snapRetainCount=3
# 日志多少小时清理一次
autopurge.purgeInterval=1
# 集群中服务器地址
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

4.添加myid

echo 1 > /export/server/zookeeper-3.4.6/zkdatas/myid 

5.分发安装包

scp -r  /export/server/zookeeper-3.4.6/ node2:/export/server/
scp -r  /export/server/zookeeper-3.4.6/ node3:/export/server/

6.其余两台服务器配置myid

# 服务器2
echo 2 > /export/server/zookeeper-3.4.6/zkdatas/myid

# 服务器3
echo 3 > /export/server/zookeeper-3.4.6/zkdatas/myid

7.配置环境变量(三台服务器均需配置)

vim /etc/profile

export ZOOKEEPER_HOME=/export/server/zookeeper-3.4.6
export PATH=:$ZOOKEEPER_HOME/bin:$PATH

source /etc/profile

8.启动zk集群

# 启动集群
zkServer.sh start

# 查看集群状态
zkServer.sh status

# 停止集群
zkServer.sh stop

Zookeeper的shell脚本

脚本1

#!/bin/bash

ssh root@node1 "source /etc/profile;zkServer.sh start"
ssh root@node2 "source /etc/profile;zkServer.sh start"
ssh root@node3 "source /etc/profile;zkServer.sh start"

脚本2

#!/bin/bash

for i in 1 2 3
do

ssh root@node$i "source /etc/profile;zkServer.sh $1"

done

脚本3

#!/bin/bash

option=""

#echo "您要进行什么操作?"
PS3="请输入您的选择:"
select var in "启动ZK集群" "停止ZK集群" "查看ZK集群状态"
do

case $var in
        "启动ZK集群")
                option="start"
        ;;
        "停止ZK集群")
                option="stop"
        ;;
        "查看ZK集群状态")
                option="status"
        ;;
        *)
        echo "选择错误!"
        ;;
esac

break;

done


for i in 1 2 3
do

echo "--------------- node$i ---------------"
ssh root@node$i "source /etc/profile;zkServer.sh $option"

done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值