Zookeeper入门

Zookeeper入门,第1张

Zookeeper入门

1、Zookeeper入门

HDFS是解决存的问题。

Hbase解决大表。

Hive是包装MapReduce的功能。

MapReduce和Spark都是引擎。

但Zookeeper没有提供具体的功能。它在大数据区块中的位置非常特征,像一个润滑油。实际上是协调大数据其他框架之间的合作的。

2、概述

                Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。

所谓的协调,举个例子。上课的时候只需要讲课的人和听课的人就够了。但实际上不是,比如说班主任,比如明天有时突然来不了了,需要通知班主任,班主任再通知学生。这个时候班主任就是起到协调的作用。原来约好的东西出现了变化,它就负责协调。

        翻译一下,就是:负责储存和管理大家都关心的课程安排,然后接受学生的注册,一旦课程的数据发生变化,班主任就讲负责通知观察者(学生)做出相应的反应(改自习)。

        两个要点:存数据、通知。

        Zookeeper在大数据中就是个背景板,它只需要安静的呆在那里就够了。它用起来也没有什么感觉。

        JaveEE中也可以使用Zookeeper。假设有3台服务器123。3个客户端123,负责消费服务器的功能。如果没有Zookeeper就直接消费就好了(客户端1可以访问服务器123、客户端2可以访问服务器123、客户端3也可以访问服务器123)。现在假设服务器2掉线,客户端是不知道的,正常跟服务器2谈业务,但是发现没有回复了。现在希望其中一个服务器一旦掉线,客户端马上能知道。这事就需要Zookeeper集群来做。Zookeeper怎么做这个事?需要两个过程,1是存数据、2是通知。现在这三台服务器把自己的服务注册到Zookeeper(1服务端启动时去注册信息,创建都是临时节点),然后客户端在Zookeeper中注册和观察这些数据(2获取到当前在线服务器列表,并且注册监听),客户端就是从Zookeeper中看,谁能够提供服务。这时候服务器2掉线了,此时Zookeeper中的数据就变了,Zookeeper看到数据变了,就会主动通知在上面注册的客户端(4服务器节点上下线事件通知),说2号服务器已经挂掉,只剩1号和3号了。于是客户端就知道这件事了,客户端就再去获取服务器列表(5重新再去获取服务器列表,并注册监听)。

总之,Zookeeper=文件系统+通知机制。它是通过这两个东西来实现协调的职能。

3、特点

(1)之前接触过yarn、hadoop等集群。集群最大的特点是主次同放。Redis、hadoop、yarn都有master和slave,同样zookeeper也有。Zookeeper中的主称为leader,从称为follower。

(2)Zookeeper不需要节点全部存活,只需要有半数以上的节点存活,它就是正常工作的。比如说5台集群的Zookeeper,挂了一台两台follower,还能正常提供服务。

(3)全局数据一致。Zookeeper存的是数据。与HDFS区别在于, HDFS所有节点存的数据是不一样的,Zookeeper所有节点存的数据都是一样的。

(4) 更新请求顺序进行。假设某个Client向集群发送了两条写请求1和2,交给了follower,因为Zookeeper的数据是全局一致的,所以不管是什么样的写请求,最终会发给每个Server一份。但是由于网络原因,Server5先收到1后收到2,Server4也是先收到1后收到2。但是到了Server2和Server1情况发生了变化,这两个都是先收到2后收到1,那它们会做哪两个写 *** 作?注意它们即使先收到2再收到1,也会先写1再写2。

(5)数据更新原子性。假设client发送数据到集群,这5台机器都往里面写数据,这5个共同进退,要么5个都成功,要么5个都失败。

(6) 实时性。当然这个也有一定的时效范围,一个Client刚写完另一个Client就读是读不到的。

其中345三个特点是最重要的。

4、数据结构  

        之前说过,Zookeeper可以存数据。路径也是以 / 作为根目录,比如写一个 /znode1/leaf1,一定可以找到唯一的一个节点对应它,从根开始,不能有重名,每个节点都有唯一的路径标识。它跟Linux系统不同的地方在于,Zookeeper的节点,没有目录和文件的区别。Linux中如果能存数据的,一定是个文件,只能存数据的文件,下面一定没有子节点;如果有子节点,它就不能存数据。Zookeeper中不分文件和文件夹,它只有一种东西称为ZNode,Zookeeper就是由无数个ZNode组成的。每个ZNode既可以有子节点,又可以存数据。默认存1M,所以Zookeeper不是拿来当硬盘用的。

5、应用场景

        提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。

统一命名服务

统一配置管理

统一集群管理

服务器动态上下线

软负载均衡

        Zookeeper在大数据中就几个用途:HA、Kafka、Hbase。凡是用到协调服务的地方,存个什么配置文件,都可以用Zookeeper。Zookeeper里面很多都是JavaEE的应用场景,什么统一命名服务、统一集群管理等等,跟大数据的关系基本没有。

        HA、Kafka、Hbase等,用到Zookeeper并不需要你去干预,只需要把Zookeeper打开就行了。它在大数据中就一个背景板,就是不懂Zookeeper,能用就行。当然现在还是要知道原理的。

6、下载地址

(1)官网首页:

Apache ZooKeeper

        Zookeeper是雅虎开发的。大数据思想之源是谷歌,当时谷歌公布了三篇论文:GFS(Google FileSystem)、MapReduce、BigTable。其实还有一篇没有公布,叫D什么的(Dataflow model?),这个就是Zookeeper这个角色,它是集群的协调平台,但这个没有开源。雅虎怒了,就自己写了一个开源的,就是Zookeeper。现在Zookeeper就是主流了,因为免费的就是最好的。

可以通过Getting Started进行Learn about和Download。

可以通过查找archive查找历史版本。

这里提供的是3.4.5和3.4.10两个包。(貌似要更新到最新的stable版本3.6.3)

(2)下载截图

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5706070.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存