Hadoop_简单操作ZooKeeper
一、概念
1. 一个开源的、分布式的,为分布式应用提供协调服务的Apache项目
2. 提供一个简单的原语集合,以便于分布式应用可以在它之上构建更高层次的同步服务
3. 设计非常易于编程,它使用的是类似于文件系统那样的树形数据结构
4. 目的是将分布式服务不再需要由于协作冲突而另外实现协作服务
5. 项目由Java语言开发,并提供了很多API
6. 官方网站:http://zookeeper.apache.org
7. 分布式:最少三个节点(节点数必为奇数个,即2n+1个节点,n为允许宕掉的节点数目)
1> Zookeeper服务启动时,会进行"选举"操作,即leader与follower,并进行监控
2> 领导者leader:为了在分布式环境中保证数据一致性,负责进行投票和发起决议,更新系统状态
3> 跟随者follower:用于接收客户请求并向客户端返回结果,在选主过程中参与投票
4> 观察者Observer:可以接受客户端连接,将请求发给leader,但不参与选主,只同步leader状态
Observer的目的是为了扩展系统,提高读取速度
5> 客户端client:请求发起方
6> 数据存放在内存中与本地,使用内存读取速度更快
7> 其下的客户端可连接任意一个server(server与client关系:多对多)
8> 允许宕机具有容错性
8. Zookeeper从设计模式看是一个基于观察者模式设计的分布式服务管理框架,负责存储和管理重要的数据,
然后接受观察者的注册,一旦数据发生变化,Zookeeper负责通知注册的观察者并做相应处理,
从而实现类似与Msater与slaver的管理模式,应用场景:
1> 统一命名服务(Name Service)
2> 硬盘管理(Configuration Management)
3> 集群管理(Group Membership)
4> 共享锁(Locks)、同步锁
二、单机模式
1> 下载zookeeper-3.4.6.tar.gz 并上传至指定目录
2> 解压并重命名其中的conf/zoo_sample.cfg为zoo.cfg
3> 修改其中dataDir属性为自定义路径
4> 回到项目主目录使用bin/zkServer.sh start启动项目
5> jps查看后多出一个QuorumPeerMain进程
6> 使用bin/zkCli.sh打开客户端
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 2] ls /zookeeper # 查看zookeeper
[quota]
[zk: localhost:2181(CONNECTED) 3] get /zookeeper # 获取其中信息
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
[zk: localhost:2181(CONNECTED) 4] create /test "123456" # 创建一个文件(目录)并赋予其值
Created /test
[zk: localhost:2181(CONNECTED) 5] ls /
[test, zookeeper]
[zk: localhost:2181(CONNECTED) 6] get /test
"123456"
cZxid = 0x4
ctime = Thu Oct 20 00:12:25 CST 2016
mZxid = 0x4
mtime = Thu Oct 20 00:12:25 CST 2016
pZxid = 0x4
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 0
[zk: localhost:2181(CONNECTED) 7] rmr /test # 删除该文件
[zk: localhost:2181(CONNECTED) 8] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 9]
三、 分布式模式
PS:在部署Zookeeper分布式模式之前需要先后关闭Zookeeper相关进程:
quit->退出客户端
bin/zkServer.sh stop -> 关闭服务
1> 准备三个节点
2> 选取其中一台,上传并解压Zookeeper
3> 重命名Zookeeper配置文件
5> 修改本地数据存储路径 -> 属性dataDir
6> 添加三个节点服务:格式 -> server.1=hadoop09-linux-01.ibeifeng.com:2888:3888
7> 在你的dataDir目录下建立myid文件并录入1(1表示计算机编号,其他两台以此类推)
8> scp 命令分发zookeeper文件夹到其他两个节点并依次修改myid机器码
9> 分别在zookeeper主目录下使用bin/zkServer.sh start 命令启动服务,
10> 每个节点使用jps查看一下进程,再使用bin/zkServer.sh status命令查看当前server选主结果
11> 可以打开客户端测试使用
Hadoop_简单操作ZooKeeper的更多相关文章
- 使用curator框架简单操作zookeeper 学习笔记
Curator 操作是zookeeper的优秀api(相对于原生api),满足大部分需求.而且是Fluent流式api风格. 参考文献:https://www.jianshu.com/p/70151f ...
- Java简单操作Zookeeper
Zookeeper客户端链接 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId ...
- ZooKeeper系列3:ZooKeeper命令、命令行工具及简单操作
问题导读1.ZooKeeper包含哪些常用命令?2.通过什么命令可以列出服务器 watch 的详细信息?3.ZooKeeper包含哪些操作?4.ZooKeeper如何创建zookeeper? 常用命令 ...
- 【ZooKeeper】ZooKeeper安装及简单操作
ZooKeeper介绍 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一 ...
- zookeeper简单操作
接下来主要讲述了通过zookeeper服务器自带的zkCli.sh工具模拟客户端访问和操作zookeeper服务器(包括集群服务器). 当成功启动zookeeper服务后,切换到server1/bin ...
- zk 06之:ZooKeeper命令、命令行工具及简单操作
常用命令ZooKeeper 支持某些特定的四字命令字母与其的交互.它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息.用户在客户端可以通过 telnet 或 nc 向 ZooK ...
- ZKClient操作zookeeper
前面简单研究了curator的使用,下面简单研究zkclient的使用. 1.创建连接 private static final String CONNECT_ADDR = "127.0.0 ...
- 使用Curator操作ZooKeeper
Curator是Netflix公司开源的一个ZooKeeper client library,用于简化ZooKeeper客户端编程.它包含如下模块: Framework:Framework是ZooKe ...
- storm操作zookeeper源码分析-cluster.clj
storm操作zookeeper的主要函数都定义在命名空间backtype.storm.cluster中(即cluster.clj文件中).backtype.storm.cluster定义了两个重要p ...
随机推荐
- java发展史与java的语言特性
概述: Java 体系比较庞杂,功能繁多,这也导致很多人在自学 Java 的时候总是感觉无法建立 全面的知识体系, 无法从整体上把握Java 的原因. 在这里我们先简单了解一下Java 的版本. 具体 ...
- 【框架】网络请求+Gson解析--Retrofit 2
其实内部是封装了Okhttp和Gson解析 public class CourseFragmentAPI { public static void get(String userId, BaseCal ...
- LR检查点的if (status == LR_FAIL)写法
C语言例子:登录失败返回一个信息 int status = web_url("Login", "URL=https://secure.computing.com//log ...
- PB之入门-itemchanged(long row,dwobject dwo,string data)
每天的总结都是必须,好记性不如烂笔头,好吧,一星期没做笔记了,最近忙上PB了,哎东学学西学学,最可怕的就是最后都半斤八两,吐槽一下关于PB的资源为何如此之少,今天记录的是关于itemchanged事件 ...
- java.util.List接口的方法subList()的使用注意事项
JDK中,List接口有一个实例方法List<E> subList(int fromIndex, int toIndex), 其作用是返回一个以fromIndex为起始索引(包含),以to ...
- BZOJ 2716 [Violet 3]天使玩偶 ——KD-Tree
[题目分析] KD-Tree的例题.同BZOJ2648. [代码] #include <cstdio> #include <cstring> #include <cstd ...
- 使用Maven构建Android项目
http://www.ikoding.com/build-android-project-with-maven/ 之前一直在做WEB前端项目,前段时间接手第一个Android项目,拿到代码之后,先试着 ...
- 获取iframe的元素并进行操作
获取iframe中的document元素有一下集中方法: 1.getElementById()方法和contentWindow属性: window.onload=function(){ /*必须等待页 ...
- HTML图片元素(标记)
<html> <head> <title>第一个网页</title> </head> <body> ************** ...
- React版本修改内容
React新版本(0.12.2)在2014年12月18日发布,对比了我之前用的v0.11.2版本改动很大,基本的写法被扩展,让我顿时感觉自己又要重新开始.坑啊~ 事已至此,必须重新适应,首先我们来看看 ...