Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Zookeeper系列(1):安装与介绍

Zookeeper系列(1):安装与介绍

作者头像
布禾
发布于 2021-04-27 08:08:20
发布于 2021-04-27 08:08:20
56810
代码可运行
举报
运行总次数:0
代码可运行
简介

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

Zookeeper数据模型

Zookeeper数据模型的结构和Unix文件系统很类似,ZooKeeper中的每个节点都称为znode,znode默认能够存储1MB的数据,并且znode的路径是znode的唯一标识。

Zookeeper中的节点分为以下四种类型:

1.持久节点

  • 持久节点被创建后会一直存在,直到主动的删除这个节点。

2.持久顺序节点

  • 持久顺序节点具备持久节点的特性,并且持久顺序节点在创建时,Zookeeper会自动的在该节点名后添加一个数字后缀,这个数字后缀是有序的,由父节点维护。

3.临时节点

  • 临时节点类似于持久节点,区别在于在客户端会话断开时,该客户端创建的临时节点将被自动删除。并且临时节点下不能创建子节点。

4.临时顺序节点

  • 临时顺序节点类似于持久顺序节点,区别在于在客户端会话断开时,该客户端创建的临时顺序节点将被自动删除。并且临时顺序节点下不能创建子节点。
Linux安装Zookeeper

下载Zookeeper:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /opt/
wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz

解压缩:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz

创建数据存储目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir /opt/zkdata

将config目录下的zoo_sample.cfg重命名为zoo.cfg:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mv zoo_sample.cfg zoo.cfg

修改zoo.cfg中的dataDir为上面创建数据存储目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dataDir=/opt/zkdata
启动Zookeeper

使用默认配置zoo.cfg启动Zookeeper:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
. /opt/apache-zookeeper-3.6.3-bin/bin/zkServer.sh start

指定配置文件启动Zookeeper:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
. /opt/apache-zookeeper-3.6.3-bin/bin/zkServer.sh start /opt/apache-zookeeper-3.6.3-bin/conf/zoo.cfg

使用jps查看Zookeeper是否已经启动:

QuorumPeerMain为Zookeeper进程。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost ~]# jps
2201 QuorumPeerMain
2235 Jps
启动客户端连接到Zookeeper:

不指定server参数,默认连接到本地的Zookeeper(localhost:2181):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
. /opt/apache-zookeeper-3.6.3-bin/bin/zkCli.sh

指定IP地址和端口,连接Zookeeper:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
. /opt/apache-zookeeper-3.6.3-bin/bin/zkCli.sh -server localhost:2181
ZooKeeper服务器其他命令

在前台启动ZooKeeper服务器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
. /opt/apache-zookeeper-3.6.3-bin/bin/zkServer.sh start-foreground

重启ZooKeeper服务器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
. /opt/apache-zookeeper-3.6.3-bin/bin/zkServer.sh restart

停止ZooKeeper服务器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
. /opt/apache-zookeeper-3.6.3-bin/bin/zkServer.sh stop
配置文件解析

zoo.cfg:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 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/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.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true

tickTime:Zookeeper与客户端的心跳间隔时间(单位毫秒)。

initLimit:Zookeeper集群中Leader和Follower之间初始连接的最大心跳数量。

syncLimit:运行过程中Zookeeper集群中Leader和Follower之间的最大心跳数量。

dataDir:数据存储位置。

clientPort:监听客户端连接的端口,即客户端尝试连接的端口。

maxClientCnxns:最大并发连接数。

autopurge.snapRetainCount:指定dataDir中保留的快照数量。

autopurge.purgeInterval:清除任务的时间间隔(小时),设置为“0”表示禁用自动清除功能。

metricsProvider.className:设置为“org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider”以启用Prometheus.io导出器。

metricsProvider.httpPort:Prometheus.io导出器将启动Jetty服务器并绑定到该端口,默认为7000。

metricsProvider.exportJvmInfo:如果将此属性设置为true,则Prometheus.io将导出有关JVM的指标,默认值为true。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
请问有java版的实现吗
请问有java版的实现吗
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
zookeeper学习系列:一、入门
基本是 http://zookeeper.apache.org/doc/trunk/zookeeperOver.html 的翻译,应用场景摘抄:http://www.wuzesheng.com/?p=
架构师刀哥
2018/03/20
1.1K0
zookeeper知识结构3-分布式锁
zk相关文章已经有了三篇《zookeeper-paxos》、《zookeeper知识结构》、《zookeeper知识结构2-zab协议》
码农戏码
2021/03/23
3340
一一例举ZooKeeper 的实战应用场景
ZooKeeper 是一个高可用的分布式数据管理与系统协调框架。基于对 Paxos 算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得 ZooKeeper 解决很多分布式问题。网上对 ZK 的应用场景也有丌少介绍,本文将结合作者身边的项目例子,系统地对ZK 的应用场景进行一个分门归类的介绍。
lyb-geek
2019/10/22
1.1K0
5分钟让你了解 ZooKeeper 的功能和原理
ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。
Java周某人
2019/08/13
1.2K0
进阶分布式系统架构系列(十三):Zookeeper 分布式锁原理与实现
前面介绍了 Zookeeper 集群 ZAB 协议、配置中心、注册中心、数据与存储、会话与事务管理等相关的知识点,今天我将详细的为大家介绍 zookeeper 分布式锁相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发支持一波!!!
民工哥
2023/09/09
2.1K0
进阶分布式系统架构系列(十三):Zookeeper 分布式锁原理与实现
zookeeper监控告警
一、ZooKeeper简介 ZooKeeper作为分布式系统中重要的组件,目前在业界使用越来越广泛,ZooKeeper的使用场景非常多,以下是几种典型的应用场景: l 数据发布与订阅(配置中心) l 负载均衡 l 命名服务(Naming Service) l 分布式通知/协调 l 集群管理与Master选举 l 分布式锁 zk环境搭建 这里不详细说明,提供详细blog说明。 Zookeeper集群搭建:https://cloud.tencent.com/developer/article/1021111 Z
三丰SanFeng
2018/01/16
3.3K1
zookeeper监控告警
[源码解析] PyTorch 分布式之弹性训练(6)---监控/容错
关于PyTorch弹性训练,迄今为止我们已经分别介绍了 Agent 和 rendezous,但是有些部分并没有深入,比如监控,本文就把它们统一起来,对弹性训练做一个整体逻辑上的梳理。
罗西的思考
2022/05/09
1.2K0
[源码解析] PyTorch 分布式之弹性训练(6)---监控/容错
ZooKeeper 的应用场景
ZooKeepr 提供基于类似于文件系统的目录节点树方式的数据存储,这是一个共享的内存中的树型结构。有几个概念需要关注一下。
runzhliu
2020/08/06
1.7K0
ZooKeeper 的应用场景
node服务的监控预警系统架构
需求背景 目前node端的服务逐渐成熟,在不少公司内部也开始承担业务处理或者视图渲染工作。不同于个人开发的简单服务器,企业级的node服务要求更为苛刻: 高稳定性、高可靠性、鲁棒性以及直观的监控和报警 想象下一个存在安全隐患且没有监控预警系统的node服务在生产环境下运行的场景,当某个node实例挂掉的情况下,运维人员或者对应开发维护人员无法立即知晓,直到客户或者测试人员报告bugs才开始解决问题。在这段无人处理的时间内,损失的订单数和用户的忠诚度和信任度将是以后无法弥补的,因此对于node程序的业务开发者
欲休
2018/03/15
1.4K0
node服务的监控预警系统架构
ZooKeeper学习第五期--ZooKeeper管理分布式环境中的数据
本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它涉及到了paxos算法、Zab协议、通信协议等相关知 识,理解起来比较抽象所以还需要借助一些应用场景,来帮我们理解。由于内容比较多,一口气吃不成胖子,得慢慢来一步一个脚印,因此我对后期 ZooKeeper的学习规划如下:
用户5640963
2019/07/26
3840
ZooKeeper学习第五期--ZooKeeper管理分布式环境中的数据
ZooKeeper 核心通识
作者:mosun,腾讯 PCG 后台开发工程师 文章分三部分展开陈述:ZooKeeper 核心知识、ZooKeeper 的典型应用实现原理、ZooKeeper 在中间件的落地案例。 为了应对大流量,现代应用/中间件通常采用分布式部署,此时不得不考虑 CAP 问题。ZooKeeper(后文简称 ZK)是面向 CP 设计的一个开源的分布式协调框架,将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用,分布式应用程序可以基于它实现诸如 数据发布/订阅、负
腾讯技术工程官方号
2022/11/30
8770
ZooKeeper 核心通识
Zookeeper初识
•Zookeeper 是 Apache Hadoop 项目下的一个子项目,是一个树形目录服务。
小炜同学
2022/09/23
3650
少年:ZooKeeper学一下
很多中间件,比如Kafka、Hadoop、HBase,都用到了 Zookeeper,于是很多人就会去了解这个 Zookeeper 到底是什么,为什么它在分布式系统里有着如此无可替代的地位。
sowhat1412
2020/11/05
5660
少年:ZooKeeper学一下
ZooKeeper(二)
即所谓的配置中心,就是发布者经数据发布到ZooKeeper的一个或一系列节点上,供订阅者进行数据订阅,进而达到动态的获取数据的目的,实现配置信息的集中式管理和数据的动态更新
小土豆Yuki
2021/07/16
3830
ZooKeeper(二)
Zookeeper 原理与实践
1、Zookeeper 的由来 在Hadoop生态系统中,许多项目的Logo都采用了动物,比如 Hadoop 和 Hive 采用了大象的形象,HBase 采用了海豚的形象,而从字面上来看 ZooKeeper 表示动物园管理员,所以大家可以理解为 ZooKeeper就是对这些动物(项目组件)进行一些管理工作的。 对于单机环境多线程的竞态资源协调方法,我们一般通过线程锁来协调对共享数据的访问以保证状态的一致性。 但是分布式环境如何进行协调呢?于是,Google创造了Chubby,而ZooKeeper则是对于Ch
用户1177713
2018/02/24
2.5K0
Zookeeper 原理与实践
JAVAEE分布式技术之Zookeeper的第一次课
1,课程回顾 2,本章重点 zk的简介和使用场景 zk 的集群搭建 zk 的选举原理
张哥编程
2024/12/13
870
JAVAEE分布式技术之Zookeeper的第一次课
Zookeeper应用场景汇总(超详细)
注意:在上面提到的应用场景中,有个默认前提是:数据量很小,但是数据更新可能会比较快的场景。
编程大道
2022/03/31
1.8K0
不懂 ZooKeeper?这给你讲的明明白白
面试常常被要求「熟悉分布式技术」,当年搞 “XXX管理系统” 的时候,我都不知道分布式系统是个啥。分布式系统是一个硬件或软件组件分布在不同的网络计算机中上,彼此之间仅仅通过消息传递进行通信和协调的系统。
程序员小猿
2021/01/19
5720
不懂 ZooKeeper?这给你讲的明明白白
zookeeper学习系列:三、利用zookeeper做选举和锁
之前只理解zk可以做命名,配置服务,现在学习下他怎么用作选举和锁,进一步还可构建master-slave模式的分布式系统。 为什么叫Zoo?“因为要协调的分布式系统是一个动物园”。 ZooKeeper是一个中性化的Service,用于管理配置信息、命名、提供分布式同步,还能组合Service。所有这些种类的Service都会在分布式应用程序中使用到。每次编写这些Service都会涉及大量的修bug和竞争情况。正因为这种编写这些Service有一定难度,所以通常都会忽视它们,这就使得在应用程序有变化时变得难以
架构师刀哥
2018/03/20
7450
调度系统Apache DolphinScheduler介绍和设计原理
大数据任务调度作为大数据建设中的核心基础设施。Apache DolphinScheduler是一个分布式、去中心化、易扩展的可视化DAG工作流任务调度系统,其致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
大数据真好玩
2021/09/18
10.7K0
调度系统Apache DolphinScheduler介绍和设计原理
相关推荐
zookeeper学习系列:一、入门
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验