老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

zookeeper服务部署与基础使用(二)!老男孩Linux培训班

老男孩IT教育

常见问题

2022年8月30日 17:26

本篇文章承接上一篇文章:【SRE工程师培训】zookeeper服务部署与基础使用,阅读本篇文章之前建议大家先阅读上一篇文章。

  本篇文章承接上一篇文章:【SRE工程师培训】zookeeper服务部署与基础使用,阅读本篇文章之前建议大家先阅读上一篇文章。

SRE工程师培训班

  zookeeper数据模型

  | zookeeper的数据结构

  zookeeper的数据模型的结构与Unix文件系统很类似,整体上可以看作一棵树,每个节点称做一个ZNode,每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识

  zookeeper的数据节点可以视为树状结构(或者目录),树中的各节点被称为znode(即zookeeper node),一个znode可以有多个子节点

  zookeeper节点在结构上表现为树状,使用路径path来定位某个znode

  比如"/etc/sysconfig/network-scripts",此处"/","etc","sysconfig","network-scripts"分别是根节点,一级节点,二级节点,和三级节点,其中"etc"是"sysconfig"的父节点,"sysconfig"是"etc"的子节点

  znode兼具文件和目录两种特点,既像文件一样维护着数据,元信息,ACL,时间戳等数据结构,又像目录一样可以作为路径标识的一部分

  | znode的组成部分

  一个znode大体上分为3个部分,如下所示:

  节点的数据:即znode data(节点path,节点data)的关系就像是python中dict的key,value的关系。

  子节点:即某个节点的子节点(children)

  节点的状态:用来描述当前节点的创建,修改记录,包括cZxid,ctime等

  | znode状态stat属性

  在zookeeper shell中使用stat命令查看指定路径节点的状态信息,如下所示

  zookeeper单机部署

  | 测试环境介绍

# cat /etc/redhat-release

CentOS Linux release 7.9.2009 (Core)

# uname -r

3.10.0-1160.el7.x86_64

uname -m

x86_64

# free -h

            total       used       free     shared buff/cache   available

Mem:           3.7G       195M        3.4G         11M         78M        3.3G

Swap:          1.0G         0B        1.0G

  | 安装JDK并配置环境变量

  温馨提示:

  JDK官方的下载地址: "https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html"

mkdir -pv /oldboyedu/softwares/

# 手动上传jdk软件包

tar xf jdk-8u301-linux-x64.tar.gz -C /oldboyedu/softwares/

ln -sv /oldboyedu/softwares/jdk1.8.0_301/ /oldboyedu/softwares/jdk

# 配置jdk环境变量

cat >/etc/profile.d/jdk.sh<<EOF

#!/bin/bash

JAVA_HOME=/oldboyedu/softwares/jdk

PATH=\$PATH:\$JAVA_HOME/bin

EOF

# 使环境变量生效

chmod +x /etc/profile.d/jdk.sh

source /etc/profile.d/jdk.sh

  | 安装zookeeper并配置环境变量

# 下载zookeeper

wget --no-check-certificate https://dlcdn.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz

# zookeeper软件部署

tar xf apache-zookeeper-3.7.1-bin.tar.gz -C /oldboyedu/softwares/

ln -sv /oldboyedu/softwares/apache-zookeeper-3.7.1-bin/ /oldboyedu/softwares/zookeeper

# 配置zookeeper环境变量

cat >/etc/profile.d/zookeeper.sh<<EOF

#!/bin/bash

ZK_HOME=/oldboyedu/softwares/zookeeper

PATH=\$PATH:\$ZK_HOME/bin

EOF

# 使环境变量生效

chmod +x /etc/profile.d/zookeeper.sh

source /etc/profile.d/zookeeper.sh

  | 创建zookeeper用户并指定家目录

mkdir -pv /oldboyedu/data

useradd -d /oldboyedu/data/zookeeper zookeeper

  | 配置zookeeper服务

# cd /oldboyedu/softwares/zookeeper/conf/

# grep "dataDir=" zoo.cfg

dataDir=/tmp/zookeeper

# sed -ri 's#(dataDir=)/tmp/zookeeper#\1/oldboyedu/data/zookeeper#' zoo.cfg

# grep "dataDir=" zoo.cfg

dataDir=/oldboyedu/data/zookeeper

  zookeeper服务管理

  | 启动zookeeper

chown -R zookeeper. /oldboyedu/softwares/apache-zookeeper-3.7.1-bin/

# 切换到zookeeper用户

su - zookeeper

# 启动zookeeper服务

zkServer.sh start

# 查看zookeeper服务状态,启动zookeeper是需要耗时的,因为它会现启动JVM

zkServer.sh status

# 启动一段时间后,再次查看发现,其模式为:"standalone"

zkServer.sh status

  | 使用"zkCli.sh"工具连接zookeeper服务

# zkCli.sh

[zk: localhost:2181(CONNECTED) 0] ls /

[zookeeper]

[zk: localhost:2181(CONNECTED) 1] quit

  | 停止zookeeper

zkServer.sh stop

  znode的基础操作

  | 创建znode

  zookeeper使用create命令创建znode

  create命令常用的选项:

create -e /oldboy01

create -s /oldboy02

  温馨提示:直接在命令行输入"create"指令就可以看到其对应的帮助信息哟~

  | 查看znode

  使用ls命令查看某个znode下的子znode信息,常用选项如下:

  使用get命令可以查看znode中存储的数据:

  温馨提示:

  •   直接在命令行输入"ls","get"指令就可以看到其对应的帮助信息哟~
  •   比较老的版本还在用"ls2"命令查看,zookeeper 3.7版本中已将其移除

  | 修改znode数据

  zookeeper使用set命令修改znode数据,常用命令选项如下所示:

  | 删除znode

  zookeeper使用delete命令删除znode,要求该znode没有子znode节点哟

  zookeeper使用deleteall命令删除包含子znode节点,生产环境中慎用哟,有点类似于linux的"rm -rf"指令

  监听器案例

  | 使用"get -w path"注册监听器,监听znode的数据变化

create /oldboy01

get /oldboy01

set /oldboy01 "oldboy2022"

# 注意哈,此时我用"-w"监听了当前的znode

get -w /oldboy01  

# 当我们修改znode的数据后,在当前终端会触发相应的通知机制

set /oldboy01 "SPARK"  

# 当我们在此修改时,发现并没有新的通知机制,说明"-w"选项只能触发一次哟 ~

set /oldboy01 "FLINK"  

  | 使用"stat -w path"注册监听器,监听znode的数据变化

create /oldboy02

stat -w /oldboy02

set /oldboy02 "Storm"

set /oldboy02 "HBase"

  | 使用"ls -w path"注册监听器,监听znode的子节点数量的变化

create /oldboy03

create /oldboy03/test01

# 注意,此处我启用了监听器

ls -w /oldboy03  

# 修改当前znode数据发现并没有触发监听器的通知机制

set /oldboy03 "HADOOP"  

# 修改子znode的数据发现依旧是没有触发监听器机制

set /oldboy03/hdfs "NN DN JN"  

# 但当我们在监听的znode节点下创建(你也可以尝试一下删除)新节点时,就会触发监听器的通知机制

create /oldboy03/hive "Hive"  

  | 删除监听器

# 注意哈,此处使用了get指令添加了一个监视器

get -w /oldboy01  

# 此处我又使用"removewatches"指令删除了监听器

removewatches /oldboy01  

# 当我们修改znode发现并没有触发监听器,这正是由于上面我们删除监听器导致的

set /oldboy01 "OLDBOY"  

  为了让学员学以致用,老男孩教育不断更新Linux培训教学大纲,与一众讲师精心打造Linux云计算SRE课程体系。老男孩教育Linux云计算SRE运维课程,从零基础开始授课,适合零基础且对Linux感兴趣的学员学习。课程的主要目的就是培养出专业的Linux系统工程师,名师授课全程面授教学,边讲边练帮助学员高效掌握Linux技术。

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。