Java大数据开发中ZooKeeper的入门操作是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
1.1 概述
ZooKeeper翻译中文名称是动物园管理员。那是不是就代表和动物有关呢?答案说是也是,说不是也不是。为什么这么说呢?动物园管理员管理的其实不是真正的动物,而是很多以动物命名的框架运行会用到ZooKeeper,大数据中很多框架都与动物有关,比如pig,hive等等,这就是奇葩之处。老外们对框架的命名也太随意了,想一出是一出。
ZooKeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目,Apache出品,所以肯定差不到哪去咯。
1.2 工作机制
Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应,从而实现集群中类似Master/Slave管理模式,不好理解,我们看下图:
我们详细来介绍工作机制里的每一步:
① 图中1表示,服务器启动的时候,都会向ZooKeeper(以下简称ZK)进行注册信息;
② 图中2表示,客户端获取到当前在线服务器列表,并且注册监听;
③ 图中3表示,有一个哥们手残,搞挂了一台服务器,服务器2现在挂掉;
④ 图中4表示,ZK一段时间内,没有接收到服务器2发射的小biubiu,会通过服务器上下线事件通知客户端
⑤ 图中5表示,重新获取服务器列表,并注册监听。
1.3 ZK特点
上图是一个ZK集群,我们看一下他们的特点:
① ZK集群,是由一个领导者(leader),多个追随者(follower)组成
② 只要有半数以上的节点存活,ZK集群就能正常使用,肯定有小可爱会有疑问,那如果四个机器挂掉两个呢?这样的话,我们的集群就剩了一个半数,不叫“半数以上”好吗,所以四个挂掉两个也是不能用滴。为了区分什么是半数以上,大家记好了,搭建集群的时候,我们搭建奇数台,不就好办了么。
③ 每个服务端都会保存一份数据副本,客户端无论连接哪一个服务端,数据都是一致的。小伙伴们要搞清楚咯:这里的数据指的是集群服务器的状态信息,与你数据库那些数据没有半毛钱关系。
④ 来自同一个客户端的更新请求,按期发送顺序,依次执行。
⑤ 原子性:集群机器一次数据更新,要么全部成功,要么全部失败。
⑥ 在一定时间范围内,客户端能读到最新数据。
这么些特点至少要理解半数以上哟(当然,主要是前几条了)
1.4 应用场景
1.4.1 统一命名服务
分布式环境下,需要对应用/服务进行统一命名,便于识别。
1.4.2 统一配置管理
分布式环境下,要求集群中,所有节点的配置信息是一致的,对配置文件修改后也需要快速同步到各个节点上。配置管理就可交由ZK实现,过程如下:
① 可将配置信息写入ZK的一个节点
② 每个客户端服务器监听这个节点
③ 一旦节点数据被修改,ZK将通知每个客户端服务器
1.4.3 统一集群管理
分布式环境中需要实时掌握每个节点的状态,并且根据实时状态做一些调整。ZK就可以实时监控节点状态的变化。实现过程如下:
① 可将节点信息,写入ZK的一个节点
② 监听节点,实时获取节点状态信息
1.4.4 软负载均衡
可以根据每台服务器的访问数,选择访问数最少的服务器进行访问。
1.5 软件下载
官网下载页面地址:https://zookeeper.apache.org/releases.html
1.6 ZK安装(单机模式,非正式环境,可用于测试)
1.6.1 安装前准备
① 安装JDK
② 拷贝ZK安装包到Linux
③ 解压到指定目录
在opt目录下创建dev文件夹,以后将解压文件,解压到此处。
1.6.2 配置修改
① 将/opt/dev/zookeeper-3.4.10/conf这个路径下zoo_sample.cfg修改为zoo.cfg
② 编辑zoo.cfg,修改dataDir路径
1.6.3 操作ZK
① 启动ZK
命令:[root@hadoop100 bin]# ./zkServer.sh start
② 查看进程是否启动
命令:jps
③ 查看状态
命令:[root@hadoop100 bin]# ./zkServer.sh status
④ 启动客户端
命令:[root@hadoop100 bin]# ./zkCli.sh
⑤ 退出客户端
命令:[root@hadoop100 bin]# quit
⑥ 停止ZK
命令:[root@hadoop100 bin]# ./zkServer.sh stop
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/231884.html