保姆级教程!10 分钟了解搞定 ZooKeeper!!!

1、简介

zookeeper被称为动物园管理员。

zk就是一个分布式文件系统,不过存储数据的量极小。

这个技术虽然比较小和简单,但是大数据领域还是离不开它的,比如:
1 hadoop集群
2 kafka集群
3 hbase 等都需要zk的支持

 1. zookeeper是一个为分布式应用程序提供的一个分布式开源协调服务框架。是Google的Chubby的一个开源实现,是Hadoop和Hbase的重要组件。主要用于解决分布式集群中应用系统的一致性问题。
2. 提供了基于类似Unix系统的目录节点树方式的数据存储。
3. 可用于维护和监控存储的数据的状态的变化,通过监控这些数据状态的变化,从而达到基于数据的集群管理。
       比如namenode 启动两个   namenode1  namenode2
4. 提供了一组原语(机器指令),提供了java和c语言的接口

 通俗的理解:
1、zk其实是一个小型的文件存储系统,可以存放少量的数据,这些数据不是什么正儿八经的数据,都是一些关于服务器的小数据。
2、它可以感知服务器是否上线,是否掉线。
3、我们为什么要学习这个东西?我们可以使用zk搭建集群环境。
   比如:hadoop的高可用(HA),namenode 存在单节点故障。我们可以启用两个namenode,一个挂掉了,另一个自动启动。另一个namenode如何知道第一个namenode挂掉了?zk就可以做到。
   包括:HBase也会使用到。
   Java架构中: zk进行分布式锁等操作。

各个版本下载界面:https://zookeeper.apache.org/releases.html 

2、特点

1. 也是一个分布式集群,一个领导者(leader),多个跟随者(follower).
2. 集群中只要有半数以上的节点存活,Zookeeper集群就能正常服务。
3. 全局数据一致性:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的。
4. 更新请求按顺序进行:来自同一个client的更新请求按其发送顺序依次执行
5. 数据更新的原子性:一次数据的更新要么成功,要么失败
6. 数据的实时性:在一定时间范围内,client能读到最新数据。

3、数据存储:

结构是从根节点开始的/
每一个子节点都可以有其他子节点,也可以在该节点上存放数据,这个来讲有点像Unix.

4、安装zookeeper 

安装之前:先关闭三台服务器的防火墙 !!!!!

systemctl stop firewalld 关闭防火墙

systemctl disable firewalld 开机不启动防火墙

1)上传 /opt/modules下面

2)解压 /opt/installs下面

tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/installs/

3) 重命名

mv zookeeper-3.4.10/ zookeeper

4)修改配置文件

 进入到/opt/installs/zookeeper/conf文件夹下,重命名zoo_sample.cfg

mv  zoo_sample.cfg  zoo.cfg

使用nodepad++或者vi修改这个配置文件

我的配置文件全部:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/opt/installs/zookeeper/zkData
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=bigdata01:2888:3888
server.2=bigdata02:2888:3888
server.3=bigdata03:2888:3888

记得在zookeeper中创建zkData文件夹,以及myid文件

 配置环境变量:

export ZOOKEEPER_HOME=/opt/installs/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

刷新一下环境变量:

source /etc/profile

接着配置第二台和第三台: 

xsync.sh /opt/installs/zookeeper

xsync.sh /etc/profile

xcall.sh source /etc/profile

在bigdata02中,修改myid 为2 bigdata03中,修改myid为3

在每一台电脑上,都启动zkServer

zkServer.sh start

 

查看状态:

因为zookeeper安装的节点比较多,每一个一个个操作非常的繁琐,所以我们可以编写一个脚本,管理zookeeper集群。
在/usr/local/bin 下面,创建zk.sh的shell脚本

#!/bin/bash

# 获取参数
COMMAND=$1
if [ ! $COMMAND ]; then
    echo "please input your option in [start | stop | status]"
    exit -1
fi
if [ $COMMAND != "start" -a $COMMAND != "stop" -a $COMMAND != "status" ]; then
    echo "please input your option in [start | stop | status]"
    exit -1
fi

# 所有的服务器
HOSTS=( bigdata01 bigdata02 bigdata03 )
for HOST in ${HOSTS[*]}
do
    ssh -T $HOST << TERMINATOR
    echo "---------- $HOST ----------"
    zkServer.sh $COMMAND 2> /dev/null | grep -ivh SSL
    exit
TERMINATOR
done

 赋给权限:

chmod u+x zk.sh

 使用:

zk.sh start
zk.sh stop
zk.sh status

这样我们的zookeeper就搭建完成了!!! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值