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. 从0开发3D引擎(补充):介绍领域驱动设计

    我们使用领域驱动设计(英文缩写为DDD)的方法来设计引擎,在引擎开发的过程中,领域模型会不断地演化. 本文介绍本系列使用的领域驱动设计思想的相关概念和知识点,给出了相关的资料. 上一篇博文 从0开发3 ...

  2. 常用阻塞队列 BlockingQueue 有哪些?

    为什么要使用阻塞队列 之前,介绍了一下 ThreadPoolExecutor 的各参数的含义(并发编程之线程池ThreadPoolExecutor),其中有一个 BlockingQueue,它是一个阻 ...

  3. 一文看懂js中元素的客户区大小(clientWidth,clientHeight)

    元素的客户区 元素的客户区大小,指的是元素内容及其内边距所占据的空间大小. 相关属性如下: 1. clientWidth:元素内容区宽度+元素左右内边距 2. clientHeight:元素内容区高度 ...

  4. node--静态服务器

    1.同步读取文件 const data = fs.readFileSync('./model/mime.json');   // 这里是添加了可以正常链接其他格式文件的服务器 const http = ...

  5. node.js-web服务器

    node.js--web服务器 目前最主流的三个Web服务器是Apache.Nginx.IIS. 使用 Node 创建 Web 服务器 以下是演示一个最基本的 HTTP 服务器架构(使用8081端口) ...

  6. 服务器推送 SSE 了解一下?

    hello~亲爱的看官老爷们大家好~过完年第一周已经结束,是时候开始制定新的工作计划了.主要负责的项目是数据可视化平台,而使用中如果服务器能有推送能力让页端得到相关通知的话,就能实现很多功能上的优化. ...

  7. 峰哥说技术:07-SpringBoot 正好Thymeleaf视图

    Spring Boot深度课程系列 峰哥说技术—2020庚子年重磅推出.战胜病毒.我们在行动 07  峰哥说技术:SpringBoot 正好Thymeleaf视图 Spring Boot视图介绍 虽然 ...

  8. python自动化第二课 - python基础2

    1.判断奇数偶数 num = input("请输入一个数字,判断是否为偶数:") print(not int(num) % 2) 2.浮点数的高精度计算用Decimal(from ...

  9. linux 读取 USB HID鼠标坐标和点击 在 LCD上显示

    首先要,编译内核时启用了 USB HID 设备.启用了 鼠标 . 在开发板上插入usb 时会有如下提示. 可以看到,多了一个 mouse0 和 eventX 打出来的是我的 联想鼠标. 1, 在 终端 ...

  10. web测试喜事连连--草稿箱功能

    “草稿箱”功能很常见吧,编辑内容后,不想发布的话,就先存为草稿.啥时候想公开了,发布即可. 今天发生个啥事呢,让作为Tester的我,哭笑不得. 开发部经理老F,反馈一个客户需求,发到群里让大家讨论. ...