what is Zookeeper?

1,开源的分布式的,为分布式应用提供协调服务的Apache项目
2,提供一个简单原语集合,以便于分布式应用可以在它之上构建更高层次的同步服务
3,设计非常易于编程,它使用的是类似于文件系统那样的树形数据结构
4,目的就是将分布式服务不再需要由于协作冲突而另外实现的协作服务

Zookeeper service

Zookeeper 数据结构
数据结构和分等级的命名空间
Zookeeper的命名空间的结构和文件系统很相似。一个名字和文件一样使用/ 的路劲表现。zookeeper的每个节点都是被路径唯一标识

Zookeeper's Hierarchical Namespace

ZooKeeper 角色

Leader,learner,client

Leader:负责进行投票的发起和决议,更新系统状态

learner又分为 follower , Observer

follower:用于接收客户请求并向客户端返回结果,在选主过程中参与投票
Observer:可以接收客户端连接,将写请求转发给leader节点。但Observer 不参加投票过程,只同步leader的状态。Observer的目的是为了扩展系统,提高读取速度

client 请求发起方

ZooKeeper 典型的应用场景
ZoopKeeper 从设计模式角度来说,是一个基于观察者模式的分布式服务管理框架,它负责存储和管理大家都关心的数据。
然后接受观察者的注册,一旦这些数据的状态发生改变,Zookeeper就将负责通知已经在Zookeeper上注册的哪些观察者做出相应的反应,从而实现集群中类似Master/Slave的管理模式

应用场景
   *统一命名服务(Name Service)
   *配置管理(Configuration Management)
   *集群管理(Group Membership)
   *共享锁(Locks)/同步锁

Zookeeper 单机模式安装

1, java 框架,需要下载安装配置JDK

2,Zookeeper 官网下载Zookeeper,解压,赋权

3,在Zookeeper 的安装目录文件下,创建保存数据的目录,默认情况,写数据的日志文件也保存在这个目录里面

mkdir -p data/zkData

4,重命名配置文件

安装目录下conf 文件夹下,有个zoo_sample.cfg,重命名为zoo.cfg,并且修改dataDir 的路径

#zookeeper 保存数据的目录,默认情况,写数据的日志文件也保存在这个目录里面
dataDir=/opt/modules/zookeeper-3.4.14/data/zkData

5,启动

bin/zkServer.sh start

bin/zkServer.sh status 查看状态 standalone

6, bin/zkCi.sh 进入客户端模式,任意键,进入命令提醒

ZooKeeper -server host:port cmd args
 stat path [watch]
 set path data [version]
 ls path [watch]
 delquota [-n|-b] path
 ls2 path [watch]
 setAcl path acl
 setquota -n|-b val path
 history
 redo cmdno
 printwatches on|off
 delete path [version]
 sync path
 listquota path
 rmr path
 get path [watch]
 create [-s] [-e] path data acl
 addauth scheme auth
 quit
 getAcl path
 close
 connect host:port

 

 Zookeeper 分布式配置

1,修改zoo.cfg,修改文件存储路径

dataDir=/opt/app/zookeeper-3.4.14/data/zkData

2,添加集群

############################cluster###################
server.1=hella-hadoop.chris.com:2888:3888
server.2=hella-hadoop02.chris.com:2888:3888
server.3=hella-hadoop03.chris.com:2888:3888

server.A=B:C:D :A是一个数字,表示是第几号服务器;B是这个服务器的ip地址;C表示这个服务器与集群中的Leader服务器交换信息的端口;

D表示的是万一集群中的Leader 服务器挂了,需要用一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

如果是伪集群的配置方式,由于B都是一样,所以不同的Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

集群模式下配置一个文件myid,这个文件在dataDir 目录下,这个文件里面就有一个数据就是A 的值,Zookeeper 启动的时候就会读取此文件,拿到里面的数据与zoo.fcg里面的配置信息比较从而判断到底是那个server

 3,在/opt/app/zookeeper-3.4.14/data/zkData 目录下创建文件myid 

不同的机器写入不同的id,和server.1,server.2,server.3相对应

4,分发至不同机器

scp -r zookeeper-3.4.14/ chris@hella-hadoop02.chris.com:/opt/app/

scp -r zookeeper-3.4.14/ chris@hella-hadoop03.chris.com:/opt/app/

并且修改myid

5,分别启动zookeeper service

bin/zkServer.sh start

bin/zkServer.sh status 查看状态 mode : leader 或者 follower

zoo.cfg 一些参数的意义

# The number of milliseconds of each tick
#客户段与服务器维持心跳的时间《zookeeper》
tickTime=
# The number of ticks that the initial
# synchronization phase can take
#initLimit 是用来配置Zookeeper接收客户端(不是用户连接Zookeeper服务器的客户端,
#而是Zookeeper服务器集群中连接到leader的follower服务器)初始化连接时最长能够忍
#受多少个心跳时间间隔数,当超过10个心跳的时间(tickTime)长度之后,zookeeper服
#务器还没收到客户端的返回信息,表明这个客户端连接失败,总的时间长度就是5*=10秒
initLimit=
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
#syncLimit 表明了Leader 和 Follower 之间发送消息,请求和应答时间长度,最长
#不能超过多少个tickTime的时间长度,总的时间长度就是2*=4秒
syncLimit=
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
#zookeeper 保存数据的目录,默认情况,写数据的日志文件也保存在这个目录里面
dataDir=/opt/modules/zookeeper-3.4./data/zkData
# the port at which the clients will connect
#客户端连接zookeeper服务器的端口,zookeeper会监听这个端口,接受客户端的访问请求
clientPort=
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=
#
# 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=
# Purge task interval in hours
# Set to "" to disable auto purge feature
#autopurge.purgeInterval=

Hadoop Zookeeper 分布式服务框架的更多相关文章

  1. 分布式服务框架Zookeeper

    协议介绍 zookeeper协议分为两种模式 崩溃恢复模式和消息广播模式 崩溃恢复协议是在集群中所选举的leader 宕机或者关闭 等现象出现 follower重新进行选举出新的leader 同时集群 ...

  2. 分布式服务框架 Zookeeper -- 管理分布式环境中的数据

    转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/index.html Zookeeper 分布式服务框架是 Apa ...

  3. 分布式服务框架 Zookeeper(转)

    分布式服务框架 Zookeeper -- 管理分布式环境中的数据 Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题 ...

  4. 分布式服务框架 Zookeeper -- 管理分布式环境中的数据(转载)

    本文转载自:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ Zookeeper 分布式服务框架是 Apache Had ...

  5. 分布式服务框架 Zookeeper -- 管理分布式环境中的数据--转载

    原文:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ Zookeeper 分布式服务框架是 Apache Hadoop ...

  6. 分布式服务框架 Zookeeper — 管理分布式环境中的数据

    本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它涉及到了paxos算法.Zab协议.通信协议等相关知识,理解起来比较抽象所以还需要借助一些应用场景,来帮我们理解. ...

  7. 【Zookeeper】分布式服务框架 Zookeeper -- 管理分布式环境中的数据

    Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理 ...

  8. 【转】分布式服务框架 Zookeeper -- 管理分布式环境中的数据

    Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理 ...

  9. 分布式服务框架:Zookeeper

    Zookeeper是一个高性能,分布式的,开源分布式应用协调服务.它提供了简单原始的功能,分布式应用可以基于它实现更高级的服务,比如同步,配置管理,集群管理,名空间.它被设计为易于编程,使用文件系统目 ...

随机推荐

  1. python3自动安装脚本,python3.x与python2.x共存

    1.前言: python3过程中,通过搜索一些文章参考安装过程发现比较麻烦,而且还出现一些不可预期的报错.python3环境需要升级openssl,所以为了部署到其他环境更方便,写自动安装脚本方式,且 ...

  2. Scrum模拟微信看一看“疫情专区”的敏捷开发过程

    无论作为产品用户还是管理咨询顾问,都非常非常喜欢微信.自认感情比较克制属于“高冷”挂,但从很多方面都太佩服太崇拜张小龙了(新书里微信也会是最喜欢的案例之一,真的不只是一个产品而已,很多方面都太牛了). ...

  3. 某图片站反爬加密字段x-api-key破解

    前言 此次逆向的是某“你们都懂”领域的图片站,目前此站限制注册,非会员无法访问:前两天偶然搞到了份邀请码,进入后发现质量还可以,于是尝试爬取,在爬虫编写过程中发现此站点采用了不少手段来阻止自动化脚本( ...

  4. 零基础JavaScript编码(三)总结

    任务目的 在上一任务基础上继续JavaScript的体验 接触一下JavaScript中的高级选择器 学习JavaScript中的数组对象遍历.读写.排序等操作 学习简单的字符串处理操作 任务描述 参 ...

  5. Anroid关于fragment控件设置长按事件无法弹出Popupwindows控件问题解决记录

    一.问题描述     记录一下最近在安卓的gragment控件中设置长按事件遇见的一个坑!!!     在正常的activity中整个活动中设置长按事件我通常实例化根部局,例如LinearLayout ...

  6. 判断括号是否有效(c++描述)

    开门见山,假设我们有一大串的由'{', '}', '[', ']', '(', ')' 这些括号构成比如像这样的"{[}][()"符号串,我们肉眼当然能看出它是非法的,那么如何使用 ...

  7. 超强图文|并发编程【等待/通知机制】就是这个feel~

    你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it well enough ...

  8. 微信小程序接入LeanCloud

    大家在做小程序或者客户端开发的时候肯定会想使得数据进行联网,但这样就必须有对应的后台服务器以及数据库,再加上linux运维等各种细节,往往会对新手比较劝退,在这里给大家推荐一种bass(后端即服务), ...

  9. 01.UNIX基础知识

    1.UNIX体系结构 什么叫做内核? 内核是一种软件,它控制计算机硬件资源,并提供程序的运行环境. 什么叫操作系统? 在广义上,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,如可以 ...

  10. oracle --游标详解(转)

    转自:http://blog.csdn.net/liyong199012/article/details/8948952 游标的概念:     游标是SQL的一个内存工作区,由系统或用户以变量的形式定 ...