大数据学习(20)—— Zookeeper介绍
ZooKeeper是什么
就像相声大师冯巩每次出场都说:“亲爱的观众朋友们,我想死你们啦”一样,我再强调一次,学习大数据官网很重要。Zookeeper官网看这里ZooKeeper
ZooKeeper 是一个开源的分布式协调服务,它本身也是分布式设计。它提供了一组简单的原语,基于这些指令,分布式应用能够实现同步、配置更新和分组等高级服务。它的设计宗旨是简单易用,它使用了树形结构的文件目录作为数据模型。
协调服务要做到准确无误是很难的,它容易引发条件竞争和死锁。ZooKeeper的目的,就是让分布式应用不在协调服务上耗费精力,只需要关注业务逻辑实现。通俗地讲,ZooKeeper就是一场交响乐的总指挥,你钢琴师、鼓乐手不用考虑乐队其他成员在干嘛,只看总指挥的指示就好了。
为啥叫ZooKeeper
ZooKeeper顾名思义,动物园管理员,它长这样
这个小伙子管了哪些东西呢?看下面
有啥发现没?是不是全是动物?
ZooKeeper架构
这是一个主从复制集群,每个Server里的数据一样,多个ZooKeeper实例之间通过选举确定一个leader,写操作都是leader来执行(follower节点把写请求转发给leader),读操作可以是客户端连接的follower节点处理。
Client通过TCP连到一个ZooKeeper上,向ZooKeeper集群进行发送请求、接收响应、监听事件、发送心跳等操作。如果Client连接的ZooKeeper宕机,它会自动连接到其他节点。
数据模型
ZooKeeper的命名空间就像一个标准的文件系统,每个节点都是一个路径,叫Znode,可以存放数据。每个节点是一个键值对,它只能存放KB级的数据,比如状态信息、配置、位置信息等等。Znode会记录一些状态信息,比如数据版本号、访问控制列表变更、时间戳等等,用来做协调控制。每当数据更新的时候,版本号会+1。
还有一类节点叫临时节点,当创建这些节点的客户端还活着的时候它就一直存在,但连接断开之后就消失了。
监听
这个概念类似于Java中的actionListener。客户端可以在节点上设置监听,当节点数据发生变化的时候,客户端会收到通知。zk3.6版本之后,监听是永久的。在这个版本之前,监听被触发之后就自动失效。
特性
ZooKeeper基于内存处理数据,速度非常快,而且它提供了一系列机制来保证提供可靠的服务。
- 顺序执行:按照客户端发送指令的先后顺序来执行操作
- 原子性:更新操作不存在中间状态,只有成功或失败两种选择
- 统一视图:集群里的所有服务器都提供统一的视图。写请求通过一致性协议,保证所有Server一致。
- 可靠
- 快速
性能
如上图所示,使用910个客户端来发起读写请求,当读请求的比例越来越高时,每秒能够处理的请求呈抛物线上升。因为写请求要保证所有节点数据一致,会消耗性能。
当读写比例大于10:1的时候,3个server每秒能支撑8万多的读请求,5个以上的server每秒能支撑14万以上的读请求。
上图还能看到一个很有意思的现象,当读请求比例是0的时候,server数越少,并发越高。server太多了,写的时候保存一致会花费更长的时间。
大数据学习(20)—— Zookeeper介绍的更多相关文章
- 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解
引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...
- 大数据学习系列之五 ----- Hive整合HBase图文详解
引言 在上一篇 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机) 和之前的大数据学习系列之二 ----- HBase环境搭建(单机) 中成功搭建了Hive和HBase的环 ...
- 大数据篇:Zookeeper
Zookeeper 1 Zookeeper概念 Zookeeper是什么 是一个基于观察者设计模式的分布式服务管理框架,它负责和管理需要关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Z ...
- 大数据学习系列之六 ----- Hadoop+Spark环境搭建
引言 在上一篇中 大数据学习系列之五 ----- Hive整合HBase图文详解 : http://www.panchengming.com/2017/12/18/pancm62/ 中使用Hive整合 ...
- 大数据学习系列之九---- Hive整合Spark和HBase以及相关测试
前言 在之前的大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 中介绍了集群的环境搭建,但是在使用hive进行数据查询的时候会非常的慢,因为h ...
- 大数据学习路线,来qun里分享干货,
一.Linux lucene: 全文检索引擎的架构 solr: 基于lucene的全文搜索服务器,实现了可配置.可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面. 推荐一个大数据学习群 ...
- 大数据学习day31------spark11-------1. Redis的安装和启动,2 redis客户端 3.Redis的数据类型 4. kafka(安装和常用命令)5.kafka java客户端
1. Redis Redis是目前一个非常优秀的key-value存储系统(内存的NoSQL数据库).和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list ...
- 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)
引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用 ...
- 大数据学习:storm流式计算
Storm是一个分布式的.高容错的实时计算系统.Storm适用的场景: 1.Storm可以用来用来处理源源不断的消息,并将处理之后的结果保存到持久化介质中. 2.由于Storm的处理组件都是分布式的, ...
- 大数据学习系列之—HBASE
hadoop生态系统 zookeeper负责协调 hbase必须依赖zookeeper flume 日志工具 sqoop 负责 hdfs dbms 数据转换 数据到关系型数据库转换 大数据学习群119 ...
随机推荐
- Windows下安装kubectl及Node和Pod操作常用命令
kubernetes通过kube-apiserver作为整个集群管理的入口.Apiserver是整个集群的主管理节点,用户通过Apiserver配置和组织集群,同时集群中各个节点同etcd存储的交互也 ...
- Redis的bitmap从基础到业务
1. 位与字节 1个字节(byte)等于8个位(bit).(计算机常识). 2. string与bitmap Redis里的bitmap是属于string这个数据类型里的.可以help进行查看bit相 ...
- 陋居寡闻,初探Github CLI For Windows,开启命令行撸铁时代
简介 gh is GitHub on the command line. It brings pull requests, issues, and other GitHub concepts to t ...
- CRM系统个性化定制的对企业的优势作用
伴随着科学技术的不断发展,企业信息化建设也在持续地开展.企业管理模式已经开始由传统模式向信息化转变,并且越来越多的企业开始使用互联网软件来进行辅助管理,这一趋势也让CRM客户管理系统得到快速的发展.市 ...
- STM32笔记四
1.时钟振荡器:产生时钟信号送给单片机内部各电路,并且控制这些电路,使它们有节拍的工作. 2.ROM是一种具有存储功能的电路,断电后信息不回丢失.RAM也是一种存储电路,断电后信息丢失. 3.串行通信 ...
- .NET 6 Preview 6 正式发布: 关注网络开发
微软.NET 团队的项目经理在博客上发布了.NET 6 Preview 6, 在候选发布阶段之前的倒数第二个预览版,也就是8月份还会发布一个Preview 7,9月份开始进入RC,两个候选版本将专注 ...
- cut和grep 选取命令
cut命令 cut:将一段信息的某一段"切"出来,处理的信息是以行为单位.参数: -d :后接分隔字符,与-f一起使用: -f :依据-d的分隔字符将一段信息切割成为数段,用-f取 ...
- C++ 标准模板库(STL)——迭代器(iterators)的用法及理解
C++ STL中迭代器(iterators)用于遍历对象集合的元素.由于容器大小随着插入删除等操作动态改变,无法像静态数组那样获取数组长度然后遍历容器里的所有元素:这时就需要迭代器,每次从容器内第一个 ...
- M1卡分类
M1卡复制前文说到,每一张M1卡的0扇区0块都是出厂时厂商赋予的绝对地址块,我们无法在M1卡内直接修改它. 说到这不得不提一下M1卡的复制子卡--UID卡,FUID卡,CUID卡. UID卡UID卡是 ...
- MQTT 2——服务端安装与客户端测试
本篇记录一下MQTT服务器,客户端,JAVA客户端的选择开发与测试 MQTT服务端选择与安装过程:MQTT客户端测试工具安装与测试:MQTT JAVA客户端的选择与开发,测试 MQTT服务器选择与安装 ...