Zookeeper服务器集群的搭建与操作
ZooKeeper
作用:Zookeeper 可以用来保证数据在zk集群之间的数据的事务性一致(原子操作)。
介绍:Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务。
它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。
特性:简单的、富有表现力的、具有高可用性、采用松耦合交互方式、是一个资源库。
如何搭建ZooKeeper服务器集群
2.1 ZooKeeper服务器集群规模不小于3个节点,要求各服务器之间系统时间要保持一致。
2.2 在hadoop0的/usr/local目录下,解压缩zookeeper-3.4.5.tar.gz(tar -zxvf zookeeper-3.4.5.tar.gz),
设置环境变量vi /etc/profile
export ZOOKEEPER_HOME=/usr/local/zk
export PATH=.:$....:$ZOOKEEPER_HOME/bin:$.....
环境变量设置好了,执行source /etc/profile
2.3 在conf目录下
重命名: mv zoo_sample.cfg zoo.cfg
2.4 编辑该文件,执行vi zoo.cfg
修改dataDir=/usr/local/zk/data
新增server.0=hadoop0:2888:3888
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
2.5 创建文件夹mkdir /usr/local/zk/data
2.6 在data目录下,创建文件myid(vi myid),值为0
2.7 把zk目录复制到hadoop1和hadoop2中
scp -r /usr/local/zk/ hadoop1:/usr/local/
scp -r /usr/local/zk/ hadoop2:/usr/local/
将hadoop0中的环境变量复制到hadoop1和hadoop2中
scp /etc/profile hadoop1:/etc/
scp /etc/profile hadoop2:/etc/
环境变量复制好了以后,在hadoop1和hadoop2上都要执行source /etc/profile
2.8 把hadoop1中相应的myid的值改为1
vi /usr/local/zk/data/myid 将里面的值改为1
把hadoop2中相应的myid的值改为2
vi /usr/local/zk/data/myid 将里面的值改为2
2.9 启动,在三个节点上分别执行命令zkServer.sh start
cd /usr/local/zk/bin
ls
zkServer.sh start
启动完了之后,在bin目录下多了一个zookeeper.out
2.10 检验,在三个节点上分别执行命令zkServer.sh status(可以看到MODE,谁是leader,谁是follower)
ZooKeeper的操作(只有shell操作,也可以用java操作)
在hadoop0下,执行zkCli.sh ,就进入到了ZooKeeper,可以在里面使用命令进行相关操作:
ls /
create /chaoren hadoop (/chaoren是path,hadoop是里面的data)
get /chaoren (可以查看到里面的data)
也可以在hadoop1或hadoop2里面:
zkCli.sh
get /chaoren
也可以修改里面的data:
set /chaoren change_data (将chaoren里面的data修改为change_data)
get /chaoren
ZooKeeper的数据模型
层次化的目录结构,命名符合常规文件系统规范
每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识
节点Znode可以包含数据和子节点,但是EPHEMERAL类型的节点不能有子节点
Znode中的数据可以有多个版本,比如某一个路径下存有多个数据版本,那么查询这个路径下的数据就需要带上版本
客户端应用可以在节点上设置监视器
节点不支持部分读写,而是一次性完整读写
Zookeeper的节点
Znode有两种类型,短暂的(ephemeral)和持久的(persistent)
Znode的类型在创建时确定并且之后不能再修改
短暂znode的客户端会话结束时,zookeeper会将该短暂znode删除,短暂znode不可以有子节点
持久znode不依赖于客户端会话,只有当客户端明确要删除该持久znode时才会被删除
Znode有四种形式的目录节点,PERSISTENT、PERSISTENT_SEQUENTIAL、EPHEMERAL、EPHEMERAL_SEQUENTIAL
Zookeeper的角色
领导者(leader),负责进行投票的发起和决议,更新系统状态
学习者(learner),包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票
Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度
客户端(client),请求发起方
Zookeeper服务器集群的搭建与操作的更多相关文章
- 虚拟机搭建Zookeeper服务器集群完整笔记
虚拟机搭建Zookeeper服务器集群完整笔记 本笔记主要记录自己搭建Zookeeper服务器的全过程,默认已经安装部署好Centos7. 一.虚拟机下Centos无法联网解决方案 1.首先调整虚拟机 ...
- ZooKeeper伪集群环境搭建
1.从官网下载程序包. 2.解压. [dev@localhost software]$ tar xzvf zookeeper-3.4.6.tar.gz 3.进入zookeeper文件夹后创建data文 ...
- zookeeper伪集群的搭建
由于公司服务器数量的限制,我们往往没有那么多的服务器用来搭建zookeeper的集群,所以产生了伪集群的搭建,也就是将多个zookeeper搭建在同一台机器上. 准备工作: 1,一台服务器,我们这里用 ...
- 【Zookeeper】集群环境搭建
一.概述 1.1 Zookeeper的角色 1.2 Zookeeper的读写机制 1.3 Zookeeper的保证 1.4 Zookeeper节点数据操作流程 二.Zookeeper 集群环境搭建 2 ...
- zookeeper以及集群的搭建
今天我来写一写zookeeper集群的搭建流程 1.zookeeper的搭建不难,难的是对他的理解以及良好的使用.单机版的zookeeper只需要解压后直接命令 启动即可 解压zookeeper,ta ...
- zookeeper 单机. 集群环境搭建
zookeeper分布式系统中面临的很多问题, 如分布式锁,统一的命名服务,配置中心,集群的管理Leader的选举等 环境准备 分布式系统中各个节点之间通信,Zookeeper保证了这个过程中 数据的 ...
- Hadoop+HBase+ZooKeeper分布式集群环境搭建
一.环境说明 集群环境至少需要3个节点(也就是3台服务器设备):1个Master,2个Slave,节点之间局域网连接,可以相互ping通,下面举例说明,配置节点IP分配如下: Hostname IP ...
- ZooKeeper伪集群的搭建(Windows)
首先下载 zookeeper 地址:https://www.apache.org/dyn/closer.cgi/zookeeper/ 1.下载完成解压后修改文件夹名字为zookeeper1,然后删除c ...
- 搭建hdfs服务器集群的搭建+trash
完全分布式搭建需要三台机器:node1.node2和node3 搭建时间之前首先要保持时间一致:date ntpdateyum install ntpdatentpdate -u ntp.sjtu.e ...
随机推荐
- 安装lsb_release
lsb_release命令用来查看当前系统的发行版信息(prints certain LSB (Linux Standard Base) and Distribution information.). ...
- Mongodb 笔记03 查询、索引
查询 1. MongoDB使用find来进行查询.find的第一个参数决定了要返回哪些文档,这个参数是一个文档,用于指定查询条件.空的查询会匹配集合的全部内容.要是不指定查询,默认是{}. 2. 可以 ...
- vue短信验证性能优化写入localstorage中
平时我们在项目中进行注册等的时候,会经常用到短信验证的功能,但是现在现在很多短信验证都是存在下面几个问题,例如短信验证时间为60s的时候, 1. 当点击完按钮时,倒计时还没到60s过完时,刷新浏览器, ...
- 跨域ajax请求携带cookie
通过withCredentials 方式: getCompanySubject: function () { return axios.get(this.apiUrls.getCompanySubje ...
- 洛谷P2766 最长递增子序列问题
https://www.luogu.org/problemnew/show/P2766 注:题目描述有误,本题求的是最长不下降子序列 方案无限多时输出 n 网络流求方案数,长见识了 第一问: DP 同 ...
- 2015/11/7用Python写游戏,pygame入门(7):碰撞检测
我们已经完成了飞机大战的大部分东西,但是游戏还是没有办法正式开玩,因为子弹并不能打掉飞机.只有完成了这一个工作,游戏才算基本成型. 今天的内容就非常简单了,就是做到这个碰撞检测,以及控制好子弹和飞机的 ...
- 蓝桥杯 地宫寻宝 DFS 动态规划
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> #include <cstdl ...
- 令assignment操作符返回一个reference to *this
[令assignment操作符返回一个reference to *this] 关于赋值,可以把它们写成连锁形式: int x, y, z; x =y =z =15; II赋值连锁形式 上述连锁赋值被解 ...
- 11个实用的CSS学习工具[转载收藏]
1. 盒子模型的幻灯片 通过3D转换效果产生的互动的幻灯片.按向左或向右箭头键切换,全屏观看会有更好的效果. 2. CSS Diner 通过一个简单的小游戏让你学习CSS selector,输入正确的 ...
- 20155230 2016-2017-2《Java程序设计》第六周学习总结
20155230 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象. 从应用程序角度 ...