Hadoop Zookeeper 分布式服务框架
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 分布式服务框架的更多相关文章
- 分布式服务框架Zookeeper
协议介绍 zookeeper协议分为两种模式 崩溃恢复模式和消息广播模式 崩溃恢复协议是在集群中所选举的leader 宕机或者关闭 等现象出现 follower重新进行选举出新的leader 同时集群 ...
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/index.html Zookeeper 分布式服务框架是 Apa ...
- 分布式服务框架 Zookeeper(转)
分布式服务框架 Zookeeper -- 管理分布式环境中的数据 Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题 ...
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据(转载)
本文转载自:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ Zookeeper 分布式服务框架是 Apache Had ...
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据--转载
原文:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ Zookeeper 分布式服务框架是 Apache Hadoop ...
- 分布式服务框架 Zookeeper — 管理分布式环境中的数据
本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它涉及到了paxos算法.Zab协议.通信协议等相关知识,理解起来比较抽象所以还需要借助一些应用场景,来帮我们理解. ...
- 【Zookeeper】分布式服务框架 Zookeeper -- 管理分布式环境中的数据
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理 ...
- 【转】分布式服务框架 Zookeeper -- 管理分布式环境中的数据
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理 ...
- 分布式服务框架:Zookeeper
Zookeeper是一个高性能,分布式的,开源分布式应用协调服务.它提供了简单原始的功能,分布式应用可以基于它实现更高级的服务,比如同步,配置管理,集群管理,名空间.它被设计为易于编程,使用文件系统目 ...
随机推荐
- 性能测试之Mysql数据库调优
一.前言 性能调优前提:无监控不调优,对于mysql性能的监控前几天有文章提到过,有兴趣的朋友可以去看一下 二.Mysql性能指标及问题分析和定位 1.我们在监控图表中关注的性能指标大概有这么几个:C ...
- 前端每日实战:39# 视频演示如何用纯 CSS 创作一个表达怀念童年心情的条纹彩虹心特效
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/QxbmxJ 可交互视频教程 此视频 ...
- 【CSS3】自定义设置可编辑元素闪烁光标的颜色
前言 因为业务需求, 要求我们的input框内的文本与悬浮的光标颜色不同, 这样的问题肯定在书本上很难找到解决办法, 需要通过平时的基础积累和经验. 解决方案 使用 ::first-line 伪元素 ...
- VUE实现Studio管理后台(九):开关(Switch)控件,输入框input系列
接下来几篇作文,会介绍用到的输入框系列,今天会介绍组普通的调用方式,因为RXEditor要求复杂的输入功能,后面的例子会用VUE的component动态调用,就没有今天的这么直观了,控件的实现原理都一 ...
- 关于org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.atguigu.crud.dao.DepartmentMapper.insertSelective的错误
今天我在使用mybatis逆向工程的时候,由于一个疏忽字打错了..结果花了一早上才把错误找全..广大小伙伴们一定要小心啊(能复制粘贴就别手打) 关于org.apache.ibatis.binding. ...
- disruptor 多生产者多消费者实战 四
一.创建event类 Order public class Order { private String id; private String name; private double price; ...
- ARM AVI 视频播放 基于 2440 freambuffer 绘制
AVI 文件格式 图解 整理: AVI 是一种容器,里面放什么格式的数据都可以 视频编码:格式可以是 H264, MPEG-4, MJPEG ,因为 MJPEG 比较简单,所以仅支持 MJPEG 的 ...
- 使用AtomicStampedReference<T>的大坑
//在初始化的时候会把引用和时间戳存到pair中 AtomicStampedReference<Integer> integerAtomicStampedReference = new A ...
- Fortify Audit Workbench 笔记 SQL Injection SQL注入
SQL Injection SQL注入 Abstract 通过不可信来源的输入构建动态 SQL 指令,攻击者就能够修改指令的含义或者执行任意 SQL 命令. Explanation SQL injec ...
- Kaggle 题目 nu-cs6220-assignment-1
Kaggle题目 nu-cs6220-assignment-1 题目地址如下: https://www.kaggle.com/c/nu-cs6220-assignment-1/overview 这是个 ...