分布式协调服务-Zookeeper
什么是 zookeeper?
Zookeeper 是google的chubby一个开源实现,是hadoop的分布式协调服务
它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。
在Hbase中会用到。
Zk(zookeeper简称)可以用来保证数据在zk集群之间的数据的事物性一致。
Zk默认数据2M以下。
zookeeper架构图
如何搭建Zookeeper服务器集群
zk服务器集群规模不小于3节点,要求服务器之间系统时间要保持一致。
将下载的zookeeper复制到/usr/local 里,解压:
tar –zxvf zookeeper-3.4.5.tar.gz
重命名:
mv zookeeper-3.4.5.tar.gz zk
在hadoop的/usr/local目录下,解压缩zk….tar.gz,设置环境变量
设置环境变量:
加入:
export ZOOKEEPER_HOME=/usr/local/zk
在PATH 后面追加:
:$ZOOKEEPER_HOME/bin
使环境变量生效:
source /etc/profile
在conf目录下,修改文件
mv zoo_sample.cfg zoo.cfg
[root@hadoop zk]# cd conf
[root@hadoop conf]# ls
configuration.xsl log4j.properties zoo_sample.cfg
[root@hadoop conf]# mv zoo_sample.cfg zoo.cfg
[root@hadoop conf]# ls
configuration.xsl log4j.properties zoo.cfg
编辑该文件:
vi zoo.cfg
修改dataDir=/usr/local/zk/data
新增
server.0=hadoop:2888:3888
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
这里讲下zookeeper的角色:
领导者(leader):负责投票的发起和决议,更新系统状态
学习者(learner):包括追随者(follower)和观察者(observer),follower用于接受客户端请求并向客户端返回结果,在选主过程中参与投票。
observer 可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度。
客户端(client),请求发起方。
创建文件夹 :
进入zk文件夹下,创建data文件夹。
[root@hadoop zk]# mkdir data
在data目录下,创建文件myid,值为0
[root@hadoop zk]# cd data
[root@hadoop data]# ls
[root@hadoop data]# vi myid
把zk目录复制到hadoop1和hadoop2中
scp -r zk hadoop1:/usr/local
scp -r zk hadoop2:/usr/local
环境变量也要复制过去
[root@hadoop local]# scp /etc/profile hadoop1:/etc/
profile 100% 2037 2.0KB/s 00:00
[root@hadoop local]# scp /etc/profile hadoop2:/etc/
profile 100% 2037 2.0KB/s 00:00
记得在hadoop1和hadoop2节点上:
source /etc/profile
使环境变量生效
把hadoop1中相应的myid的值改为1,把hadoop2中相应的myid的值改为2
[root@hadoop local]# ssh hadoop1
Last login: Mon May 11 08:22:01 2015 fromhadoop
[root@hadoop1 ~]# vi /usr/local/zk/data
[root@hadoop1 ~]# vi /usr/local/zk/data/myid
[root@hadoop1~]# exit
logout
Connection to hadoop1 closed.
[root@hadoop local]# ssh hadoop2
Last login: Mon May 11 08:21:48 2015 fromhadoop
[root@hadoop2 ~]# vi /usr/local/zk/data/myid
[root@hadoop2 ~]# exit
logout
Connection to hadoop2 closed.
启动,在三个节点上分别执行命令zkServer.sh start
[root@hadoop zk]# cd bin
[root@hadoop bin]# ls
README.txt zkCli.cmd zkEnv.cmd zkServer.cmd
zkCleanup.sh zkCli.sh zkEnv.sh zkServer.sh
[root@hadoop bin]# zkServer.sh start
JMX enabled by default
Using config:/usr/local/zk/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
其他两个节点类似上面操作
[root@hadoop bin]# ssh hadoop1
Last login: Mon May 11 08:24:36 2015 fromhadoop
[root@hadoop1~]# cd /usr/local
[root@hadoop1 local]# cd zk
[root@hadoop1 zk]# cd bin
[root@hadoop1 bin]# ls
README.txt zkCli.cmd zkEnv.cmd zkServer.cmd
zkCleanup.sh zkCli.sh zkEnv.sh zkServer.sh
[root@hadoop1 bin]# zkServer.sh start
JMX enabled by default
Using config:/usr/local/zk/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@hadoop1 bin]# ssh hadoop2
Last login: Mon May 11 08:25:52 2015 fromhadoop
[root@hadoop2 ~]# cd /usr/local/zk/bin
[root@hadoop2 bin]# zkServer.sh start
JMX enabled by default
Using config:/usr/local/zk/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
检验,在三个节点上分别执行命令zkServer.sh status
查看选举结果:
[root@hadoop2 bin]# zkServer.sh status
JMX enabled by default
Using config:/usr/local/zk/bin/../conf/zoo.cfg
Mode: follower
[root@hadoop1 bin]# zkServer.sh status
JMX enabled by default
Using config: /usr/local/zk/bin/../conf/zoo.cfg
Mode: leader
[root@hadoop bin]# zkServer.sh status
JMX enabled by default
Using config:/usr/local/zk/bin/../conf/zoo.cfg
Mode: follower
Zookeeper的使用(命令行操作)
Zookeeper有目录结构,称作节点,节点可以赋值,可以添加,可以删除
终端:zkCli.sh 可以进入命令行
[zk: localhost:2181(CONNECTED) 2] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 3] ls/zookeeper
[quota]
[zk: localhost:2181(CONNECTED) 4] ls/zookeeper/quota
[]
创建了一个节点,给它赋值hadoop,通过get 命令获得它的值。
[zk: localhost:2181(CONNECTED) 5] create/cloud hadoop
Created /cloud
[zk: localhost:2181(CONNECTED) 6] ls /
[cloud, zookeeper]
[zk: localhost:2181(CONNECTED) 7] get /cloud
hadoop
cZxid = 0x100000002
ctime = Mon May 11 10:07:07 CST 2015
mZxid = 0x100000002
mtime = Mon May 11 10:07:07 CST 2015
pZxid = 0x100000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
可以set 设置值 你会发现在其他的两个zookeeper服务器上,会获得这个值,也就是所谓的事物一致性。
Zookeeper的节点
Znode有两种类型,短暂的和持久的。
Znode的类型在创建时确定给并且之后不能 在修改。
短暂znode的客户端会话结束时,zookeeper会将该短暂的znode删除,短暂znode不可以有子节点。
持久znode不依赖与客户端会话,只有当客户端明确要删除该持久znode时才会被删除。
分布式协调服务-Zookeeper的更多相关文章
- 分布式协调服务Zookeeper集群之ACL篇
分布式协调服务Zookeeper集群之ACL篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.zookeeper ACL相关知识概览 1>.zookeeper官方文档(h ...
- 分布式协调服务Zookeeper集群监控JMX和ZkWeb应用对比
分布式协调服务Zookeeper集群监控JMX和ZkWeb应用对比 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. JMX是用来远程监控Java应用的框架,这个也可以用来监控其他的J ...
- 分布式协调服务Zookeeper集群搭建
分布式协调服务Zookeeper集群搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装jdk环境 1>.操作环境 [root@node101.yinzhengjie ...
- 分布式协调服务Zookeeper扫盲篇
分布式协调服务Zookeeper扫盲篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 身为运维工程师对kubernetes(k8s)可能比较熟,那么etcd(go语言实现)分布式协 ...
- 搞懂分布式技术3:初探分布式协调服务zookeeper
搞懂分布式技术3:初探分布式协调服务zookeeper 1.Zookeepr是什么 Zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅,负载均衡, ...
- 分布式协调服务ZooKeeper工作原理
分布式协调服务ZooKeeper工作原理 原创 2016-02-19 杜亦舒 性能与架构 性能与架构 性能与架构 微信号 yogoup 功能介绍 网站性能提升与架构设计 大数据处理框架Hadoop.R ...
- 1.9 分布式协调服务-Zookeeper(一)
前言 分布式环境的特点 分布性 并发性 程序运行过程中,并发性操作是很常见的.比如同一个分布式系统中的多个节点,同时访问一个共享资源.数据库.分布式存储 无序性 进程之间的消息通信,会出现顺序不一致问 ...
- 中小型研发团队架构实践八:分布式协调服务ZooKeeper
一.ZooKeeper 是什么 Apache ZooKeeper 由 Apache Hadoop 的子项目发展而来,于 2010 年 11 月正式成为了 Apache 的顶级项目. ZooKeeper ...
- 中小型研发团队架构实践:分布式协调服务ZooKeeper
一.ZooKeeper 是什么 Apache ZooKeeper 由 Apache Hadoop 的子项目发展而来,于 2010 年 11 月正式成为了 Apache 的顶级项目. 相关厂商内容 优秀 ...
随机推荐
- springboot2.0(一):【重磅】Spring Boot 2.0权威发布
就在昨天Spring Boot2.0.0.RELEASE正式发布,今天早上在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2.0同步到Maven仓库的时候出现了错误, ...
- CodeForces - 796B 模拟
思路:模拟移动即可,如果球落入洞中停止移动.注意:有可能第一个位置就是洞!! AC代码 #include <cstdio> #include <cmath> #include ...
- HDU - 4545 字符串处理
思路:对于每个字符,如果它能被替换一定要优先替换,其次再进行删除.遵循这个策略即可. 证明: 对于这题的第一个测试数据: abba addba 1 d b 当匹配到'b' 和 'd'时应该优先替换而 ...
- CDN网络架构
CDN(content delivery network 内容分发网络) 本质上就是提供缓存,使得用户总是能访问离他最近的服务器,akamai是世界上的第一家做CDN的公司 实例:构建CDN分发网络架 ...
- 笔记︱金融风险控制基础常识——巴塞尔协议+信用评分卡Fico信用分
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 本笔记源于CDA-DSC课程,由常国珍老师主讲 ...
- 《实战Nginx》读书笔记
最近今天读了一本书叫做<实战Nginx:取代Apache的高性能Web服务器>,看后对Nginx 了解了不少.但是还有很多地方不是很了解.不过此书可以作为一本参考手册来使用,里面的讲解很详 ...
- vector 遍历
vector向量容器,是数组的一个泛化推广.实现了类似于数据结构中顺序表的操作. vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象).vector对象可以在运行时高效地添加元素 ...
- hi3531 SDK 编译 kernel, 修改 参数
开发环境用户指南上这么写的 3.1 内核源代码 成功安装Hi3531 SDK后,内核源代码已存放于SDK目录下的osdrv/目录中,用户可 直接进入目录进行相关操作. 3.2 配置内核 如果对内核和H ...
- .Net+SQL Server企业应用性能优化笔记—精确查找瓶颈
首先我们需要部署一个测试环境,将Web项目的源代码拷到测试环境Web服务器IIS上,使得可以直接通过IE访问我们的网站.SQL Server环境可以部署在同一台机器上,条件允许的话有专门的数据库测试服 ...
- touch.js下载使用方式
touch.js下载地址 https://gitee.com/mirrors/touch-js Touch 在开发移动端的应用中会使用到很多的手势操作,例如一指拖动.两指旋转等等,为了方便开放者快速集 ...