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是一个高性能,分布式的,开源分布式应用协调服务.它提供了简单原始的功能,分布式应用可以基于它实现更高级的服务,比如同步,配置管理,集群管理,名空间.它被设计为易于编程,使用文件系统目 ...
随机推荐
- LeetCode 题解 | 237. 删除链表中的节点
题目描述: 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 现有一个链表 -- head = [4,5,1,9],它可以表示为: 示例 1: 输入: hea ...
- 2020年春招面试必备Spring系列面试题129道(附答案解析)
前言 关于Spring的知识总结了个思维导图分享给大家 1.不同版本的 Spring Framework 有哪些主要功能? 2.什么是 Spring Framework? Spring 是一个 ...
- 基于springcloud搭建项目-公共篇(二)
上一篇已经写过如何搭建注册中心eureka,这一篇主要是搭建一些公共的api接口服务,并把实体类单独拿出来放到一个服务上引用,比较简单的 1.首先.创建一个实体类服务,这样就不用在每个服务里创建实体了 ...
- seo搜索优化教程14-seo搜索优化实战
为了使大家更方便的了解及学习网络营销推广.seo搜索优化,星辉信息科技强势推出seo搜索优化教程.此为seo教程第14课 根据前面学习的seo搜索优化内容,星辉科技进行总结性的分析,形成一份标准的se ...
- Sequence to Sequence Learning with Neural Networks论文阅读
论文下载 作者(三位Google大佬)一开始提出DNN的缺点,DNN不能用于将序列映射到序列.此论文以机器翻译为例,核心模型是长短期记忆神经网络(LSTM),首先通过一个多层的LSTM将输入的语言序列 ...
- Head First设计模式——中介者模式和备忘录模式
中介者 中介者模式:使用中介者来集中相关对象之间复杂的沟通方式和控制方式. Bob有一个自动屋,当他的闹钟响了只有,闹钟会告诉咖啡壶开始煮咖啡.后来客户不断的提出许多新需求:周末不要提供咖啡.下班后需 ...
- C++ 阶乘求和
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> long long reslut( ...
- 问题描述:判断一个整数 n 是否为 2 的幂次方
一.2的幂次方的基本定义 什么样的数为2的幂次方?例如2^0=1,2^1=2,2^2=4……,符合公式2^n(n>=0)的数称为2的幂次方. 如何判断一个数是否为2的幂次方呢?基本思路:把一个数 ...
- 用 SendGrid 发送免费电子邮件
1. 概述 SendGrid 免费账号可以限额发送 100/天封邮件,虽然比 Mailgun 的每月 10000 封的免费额度少,但胜成注册无需绑定信息卡. 集成 SendGrid 有 SMTP 和 ...
- libfastcommon总结(〇)
libfastcommon提供众多基础功能,该系列笔记将进行学习介绍. load_local_host_ip_addrs 进行加载主机上所有网卡的IPv4的地址. iniLoadFromFile 从文 ...