Zookeeper的安装与使用

一、简介

1.1、概念

ZooKeeper 是一个开源的分布式协调服务,主要用于解决分布式系统中的数据一致性问题。它提供了一种可靠的机制来管理和协调分布式系统的各个节点。ZooKeeper 的设计目标是简化分布式应用的开发,提供简单易用的接口和高性能、高稳定性的系统。

通俗的理解:

1、zk其实是一个小型的文件存储系统,可以存放少量的数据,这些数据不是什么正儿八经的数据,都是一些关于服务器的小数据。

2、它可以感知服务器是否上线,是否掉线。

3、我们为什么要学习这个东西?我们可以使用zk搭建集群环境。

比如:hadoop的高可用(HA),namenode 存在单节点故障。我们可以启用两个namenode,一个挂掉了,另一个自动启动。另一个namenode如何知道第一个namenode挂掉了?zk就可以做到。

包括:HBase也会使用到。

Java架构中: zk进行分布式锁等操作。

1.2、特点

  1. 是一个分布式集群,一个领导者(leader),多个跟随者(follower).

  2. 集群中只要有半数以上的节点存活,Zookeeper集群就能正常服务。

  3. 全局数据一致性:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的。

  4. 更新请求按顺序进行:来自同一个client的更新请求按其发送顺序依次执行

  5. 数据更新的原子性:一次数据的更新要么成功,要么失败

  6. 数据的实时性:在一定时间范围内,client能读到最新数据。

二、安装

关闭三台服务器的防火墙

2.1、上传解压重命名

上传:将zookeeper的安装包上传到 /opt/modules 下

解压:

cd /opt/modules

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

重命名:

cd /opt/installs

mv zookeeper-3.4.10/ zookeeper

2.2、修改配置文件

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

cd /opt/installs/zookeeper/conf

mv zoo_sample.cfg zoo.cfg

这是我的全部配置,可以参照一下修改自己的配置:

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

Metrics Providers

https://prometheus.io Metrics Exporter

#metricsProvider.httpPort=7000

#metricsProvider.exportJvmInfo=true

server.1=bigdata01:2888:3888

server.2=bigdata02:2888:3888

server.3=bigdata03:2888:3888

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

cd /opt/installs/zookeeper

mkdir zkData

touch myid

echo "1" > myid

配置环境变量:

export ZOOKEEPER_HOME=/opt/installs/zookeeper

export PATH=PATH:ZOOKEEPER_HOME/bin

刷新环境变量

source /etc/profile

第二台和第三台服务器也是这样配置,不过第二台的 myid 里面是 2 ;第三台是 3 。

三、使用

3.1、启动zookeeper

要在每一台机器上都启动

zkServer.sh start

一个启动脚本,在/usr/local/bin 下面,创建zk.sh

#!/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 #查看状态

3.2、连接zkServer

zkCli.sh 直接回车,连接的是本机的节点

3.3、create 创建新的节点

create /bigdata

3.4、set 在节点上设置数据

set /bigdata01 "HelloWorld"

3.5、ls 查看某个路径下的子节点

ls / # / 是根目录

ls /zookeeper

3.6、get 查看某个节点上的数据

get /bigdata01

3.7、delete 删除节点

delete /bigdata

如果节点下有子节点,则 delete 是删不掉的,需要使用 deleteall

deleteall /bigdata

相关推荐
yurenshi166831 分钟前
自媒体多账号管理工具 4 款实测:聚媒通 / 融媒宝 / 新榜小豆芽 / 矩阵通横向对比,快速选型
大数据·矩阵·媒体
nVisual2 小时前
机柜PDU安装位置与空间建模方案
大数据·网络·数据库·信息可视化·数据中心基础设施管理
@insist1232 小时前
系统规划与管理师-流程评价与持续改进核心知识-终章
大数据·人工智能·软考·系统规划与管理师·软件水平考试·系统规划与管理工程师
TechEdu2026063 小时前
[计算机科学]大数据硬件架构与软件架构概览
大数据·计算机科学
曾阿伦3 小时前
Windows 下运行 Hadoop 并部署到 AWS EMR 指南
hadoop·windows·aws
爱莉希雅&&&3 小时前
elasticsearch+kibana+logstash+filebeat链路部署流程
大数据·elasticsearch·搜索引擎·kibana·logstash·filebeat
FII工业富联科技服务3 小时前
从灯塔工厂到AI Factory新模式:AI正在重构制造业的四大核心能力
大数据·运维·人工智能·重构·ar·制造
小五传输3 小时前
自主可控建设指南:Serv-u替代方案,实现平滑迁移业务不中断
大数据·运维·安全
Spey_Events3 小时前
【核心议题发布】聚焦深度维修与 AI 智慧革新!2026中国民用航空维修智造展——议题重磅发布!
大数据·人工智能
czzxxxxxx3 小时前
创客匠人AI智能体:知识付费从“重人力”走向“自动化”的拐点
大数据·人工智能