Zookeeper基础教程

Zookeeper基础教程

资料来源:Zookeeper Tutorial (tutorialspoint.com)

zookeeper就是Hadoop生态动物园的管理员

Zookeeper Tutorial

1. Zookeeper-概述

ZooKeeper是一种分布式协调服务,用于管理大型主机集群(large set of hosts)。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper用它简单的架构和API解决了这个问题。ZooKeeper允许开发人员专注于核心应用逻辑,而不用担心应用的分布式特性。

ZooKeeper框架最初是在Yahoo!,以便以一种简单而稳健的方式访问他们的应用程序。后来,Apache ZooKeeper成为Hadoop、HBase和其他分布式框架使用的有组织服务的标准。例如,Apache HBase使用ZooKeeper来跟踪分布式数据的状态。本教程解释了ZooKeeper的基础知识,如何在分布式环境中安装和部署ZooKeeper集群,最后以使用Java编程和示例应用程序的几个示例结束。


在进一步讨论之前,了解一些关于分布式应用程序的知识是很重要的。因此,让我们从快速概述分布式应用程序开始讨论。

分布式应用

分布式应用程序可以在给定时间(同时)在网络中的多个系统上运行,通过它们之间的协调以快速有效的方式完成特定的任务。通常,非分布式应用程序(在单个系统中运行)需要数小时才能完成的复杂且耗时的任务,通过使用所有相关系统的计算能力,分布式应用程序可以在几分钟内完成。

通过将分布式应用程序配置为在更多系统上运行,可以进一步减少完成任务的时间。运行分布式应用程序的一组系统称为集群(Cluster),在集群中运行的每台机器称为节点(Node)。

分布式应用程序有两个部分,服务器(Server)和客户端(Client)应用程序。服务器应用程序实际上是分布式的,并且具有公共接口,因此客户机可以连接到集群中的任何服务器并获得相同的结果。客户机应用程序是与分布式应用程序交互的工具。如下图所示。

Distributed Application


分布式应用程序的优点

可靠性−单个或部分系统故障不会导致整个系统故障。

可扩展性-性能可以在需要时增加更多的机器,在应用程序的配置中进行微小的更改,而不会停机。

透明性-隐藏系统的复杂性,显示其作为一个单一的实体/应用程序。


分布式应用的挑战

竞态条件(Race condition)−:两台或两台以上的机器同时执行某项任务,而该任务在任何给定时间内实际上只需要一台机器来完成。例如,共享资源在任何给定时间只能由一台机器修改。聪明的你有没有想起操作系统的知识?(doge)

死锁−两个或多个操作无限期地等待对方完成。

不一致性−数据部分失效。


那么ZooKeeper存在的意义是什么?

Apache ZooKeeper是集群(一组节点)使用的服务,通过强大的同步技术在集群(一组节点)之间进行协调并维护共享数据。ZooKeeper本身就是一个分布式应用程序,为编写分布式应用程序提供服务。

ZooKeeper提供的常用服务有:

命名服务−通过名称识别集群中的节点。它类似于DNS,但针对的是节点。

配置管理−接入节点最新的系统配置信息。

集群管理−实时管理集群中节点的加入/退出和节点状态。

Leader选举−选举节点作为Leader进行协调。

锁定同步服务−数据修改时锁定。这种机制可以帮助您在连接其他分布式应用程序(如Apache HBase)时自动进行故障恢复。

高可靠性的数据注册表−即使一个或几个节点宕机,数据仍然可用。

分布式应用程序提供了很多好处,但也带来了一些复杂和难以破解的挑战。ZooKeeper框架提供了一个完整的机制来克服所有的挑战。使用故障安全同步方法(fail-safe synchronization approach)处理竞争条件和死锁。另一个主要缺点是数据不一致,ZooKeeper通过**原子性(atomicity)**解决了这个问题。


Zookeeper的优点

简单的分布式协调过程

同步−服务器进程间互斥协作。这个过程有助于在Apache HBase中进行配置管理。

有序的消息(Ordered Messages)

序列化−按照指定的规则对数据进行编码。确保应用程序始终如一地运行。这种方法可以在MapReduce中用于协调队列以执行正在运行的线程。

可靠性

原子性-数据传输完全成功或完全失败,但没有事务是部分的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/727949.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第三期【Demo教程】教你使用SeaTunnel把数据从MySQL导到Hive

随着数据技术的快速发展,了解并掌握各种工具和技术变得尤为重要。为此,我们准备在Apache SeaTunnel社区发起如何使用连接器的Demo演示计划,邀请所有热爱数据同步技术的同学分享他们的知识和实操经验! 我们第三期主题是:如何使用Se…

Cesium源码解析六(3dtiles属性获取、建筑物距离计算、建筑物着色及其原理分析)

快速导航 Cesium源码解析一(搭建开发环境) Cesium源码解析二(terrain文件的加载、解析与渲染全过程梳理) Cesium源码解析三(metadataAvailability的含义) Cesium源码解析四(metadata元数据拓展…

物联网设备安装相关知识整理

拓扑图 对于ADAM-4150先接设备的整体的供电。 ADAM-4150就涉及到几个电子元器件的连接,一个是485-232的转换器,一个是将RS-232转换为USB的转接口,因为现在的计算机很多都去掉了RS-232接口而使用USB接口。 4150右侧有个拨码,分别两…

在Linux服务器上安装Anaconda使用conda

1. 下载安装包 wget https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh 安装成功 2. 安装anaconda chmod x Anaconda3-5.3.0-Linux-x86_64.sh./Anaconda3-5.3.0-Linux-x86_64.sh 一直回车 直到出现 yes or no, 输入 yes 继续回车,然…

链表OJ

GDUFE 在期末前再刷一次链表题 ~ 203. 移除链表元素 - 力扣(LeetCode) /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* removeElements(struct ListNode* head, int …

文本高效管理神器:支持自定义行数拆分,轻松实现批量高效编辑与管理新体验

在信息爆炸的时代,文本处理成为了我们日常工作中不可或缺的一部分。然而,面对大量的文本数据,如何高效地进行编辑和管理,却成为了许多人头疼的问题。现在,有了我们的文本批量高效编辑管理工具,一切将变得简…

Srouce Insight 4出现乱码

今天用SI4打开一个工程文件,一打开发现注释全是乱码。中文全部看不出来,英文和数字可以看得出来。 那是因为中文的编码格式不算特别兼容。所以需要调整编码格式。 于是我在这里调整了编码格式: 找到菜单的Options-Preferences里面的Files 调…

web中间件漏洞-Tomcat漏洞-密码爆破、war包上传

web中间件漏洞-Tomcat漏洞-密码爆破、war包上传 密码爆破 步骤: 抓登陆包、对字典进行base64编码,爆破得到账号密码tomcat/tomcat,登陆即可 tomcat/tomcat登陆成功 服务器 查看 tomcat-users.xml里的账号密码 war包上传 步骤 上传war包、访问即可

JAVA每日作业day6.20

ok了家人们,今天学习了面向对象的继承,话不多说让我们看看怎么个事。 我们先把昨天学 面向对象-封装 的温习一下,来个例子 1,综合案例 做一个关于学生的随机点名器 定义了两个变量,name和age,给他们封装一…

自动化办公04 使用pyecharts制图

目录 一、柱状图 二、折线图 三、饼图 四、地图 1. 中国地图 2. 世界地图 3. 省会地图 五、词云 Pyecharts是一个用于数据可视化的Python库。它基于Echarts库,可以通过Python代码生成各种类型的图表,如折线图、柱状图、饼图、散点图等。 Pyecha…

Python之scapy(1)基础使用

Python之scapy(1)基础使用 Author: Once Day Date: 2024年6月4日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: Python开发_Once-Day的博客-CSDN博…

审稿人:拜托,请把模型时间序列去趋势!!

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 时间序列分析是数据科学中一个重要的领域。通过对时间序列数据的分析,我们可以从数据中发现规律、预测未来趋势以及做出决策…

【python - 函数】

一、递归函数 如果函数体中直接或间接调用了函数本身,则函数称为递归(recursive)函数。也就是说,执行递归函数主体的过程中可能需要再次调用该函数。在 Python 中,递归函数不需要使用任何特殊语法,但它们确…

智慧消防新篇章:可视化数据分析平台引领未来

一、什么是智慧消防可视化数据分析平台? 智慧消防可视化数据分析平台,运用大数据、云计算、物联网等先进技术,将消防信息以直观、易懂的图形化方式展示出来。它不仅能够实时监控消防设备的运行状态,还能对火灾风险进行预测和评估…

大数据助力电商发展||电商API接口接入

伴随互联网尤其是移动互联网的高速发展,电子商务已经成为人们生活中不可或缺的一部分,人们的购物理念和消费模式正在发生颠覆性的转变。基于天然的数据优势,电子商务平台利用大数据计算技术不断实施数据的累积、分析和处理,消费者…

如何设计一个点赞系统

首先我们定义出一个点赞系统需要对外提供哪些接口: 1.用户对特定的消息进行点赞; 2.用户查看自己发布的某条消息点赞数量以及被哪些人赞过; 3.用户查看自己给哪些消息点赞过; 这里假设每条消息都有一个message_id, 每一个用户都…

[17] 使用Opencv_CUDA 进行滤波操作

使用Opencv_CUDA 进行滤波操作 邻域处理操作 > 滤波操作,拒绝或者允许某特定频段通过如果图像某处的灰度级变化缓慢,那么就是低频区域,如果灰度级变化剧烈,就是高频区域邻域滤波即卷积操作形态学处理:膨胀&#xf…

【论文通读】VideoGUI: A Benchmark for GUI Automation from Instructional Videos

VideoGUI: A Benchmark for GUI Automation from Instructional Videos 前言AbstractMotivationVideoGUIPipelineEvaluation ExperimentsMain ResultsAnalysis Conclusion 前言 数字智能体的探索又来到了新的阶段,除了常见的桌面工具如PPT,Word&#xf…

HTML(15)——盒子模型

盒子模型组成 内容区域 -width&height内边距-padding (出现在内容与盒子边缘之间)边框线-border外边距-margin (出现在盒子外面) div { width: 200px; height: 200px; background-color: rgb(85, 226, 193); padding: 20px; …

【项目实践】Ulike充电牙刷拆解

前言 用了一段时间的充电牙刷,某一次突然没电了,按键也没有反应。无奈只能废弃。最近略微得了些空闲,想着把它拆解看看里面的结构和电路。以下是鼓捣过程记录。 为什么不能直接抽出来? 在网上看到很多拆解视频,都是打开…