一、概念

  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打开客户端

  1. [zk: localhost:2181(CONNECTED) 1] ls /
  2. [zookeeper]
  3. [zk: localhost:2181(CONNECTED) 2] ls /zookeeper     # 查看zookeeper
  4. [quota]
  5. [zk: localhost:2181(CONNECTED) 3] get /zookeeper     # 获取其中信息
  6. cZxid = 0x0
  7. ctime = Thu Jan 01 08:00:00 CST 1970
  8. mZxid = 0x0
  9. mtime = Thu Jan 01 08:00:00 CST 1970
  10. pZxid = 0x0
  11. cversion = -1
  12. dataVersion = 0
  13. aclVersion = 0
  14. ephemeralOwner = 0x0
  15. dataLength = 0
  16. numChildren = 1
  17. [zk: localhost:2181(CONNECTED) 4] create /test "123456"  # 创建一个文件(目录)并赋予其值
  18. Created /test
  19. [zk: localhost:2181(CONNECTED) 5] ls /
  20. [test, zookeeper]
  21. [zk: localhost:2181(CONNECTED) 6] get /test
  22. "123456"
  23. cZxid = 0x4
  24. ctime = Thu Oct 20 00:12:25 CST 2016
  25. mZxid = 0x4
  26. mtime = Thu Oct 20 00:12:25 CST 2016
  27. pZxid = 0x4
  28. cversion = 0
  29. dataVersion = 0
  30. aclVersion = 0
  31. ephemeralOwner = 0x0
  32. dataLength = 8
  33. numChildren = 0
  34. [zk: localhost:2181(CONNECTED) 7] rmr /test         # 删除该文件
  35. [zk: localhost:2181(CONNECTED) 8] ls /
  36. [zookeeper]
  37. [zk: localhost:2181(CONNECTED) 9]

三、 分布式模式

  1. PS:在部署Zookeeper分布式模式之前需要先后关闭Zookeeper相关进程:
  2. quit->退出客户端
  3. 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的更多相关文章

  1. 使用curator框架简单操作zookeeper 学习笔记

    Curator 操作是zookeeper的优秀api(相对于原生api),满足大部分需求.而且是Fluent流式api风格. 参考文献:https://www.jianshu.com/p/70151f ...

  2. Java简单操作Zookeeper

    Zookeeper客户端链接 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId ...

  3. ZooKeeper系列3:ZooKeeper命令、命令行工具及简单操作

    问题导读1.ZooKeeper包含哪些常用命令?2.通过什么命令可以列出服务器 watch 的详细信息?3.ZooKeeper包含哪些操作?4.ZooKeeper如何创建zookeeper? 常用命令 ...

  4. 【ZooKeeper】ZooKeeper安装及简单操作

    ZooKeeper介绍 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一 ...

  5. zookeeper简单操作

    接下来主要讲述了通过zookeeper服务器自带的zkCli.sh工具模拟客户端访问和操作zookeeper服务器(包括集群服务器). 当成功启动zookeeper服务后,切换到server1/bin ...

  6. zk 06之:ZooKeeper命令、命令行工具及简单操作

    常用命令ZooKeeper 支持某些特定的四字命令字母与其的交互.它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息.用户在客户端可以通过 telnet 或 nc 向 ZooK ...

  7. ZKClient操作zookeeper

    前面简单研究了curator的使用,下面简单研究zkclient的使用. 1.创建连接 private static final String CONNECT_ADDR = "127.0.0 ...

  8. 使用Curator操作ZooKeeper

    Curator是Netflix公司开源的一个ZooKeeper client library,用于简化ZooKeeper客户端编程.它包含如下模块: Framework:Framework是ZooKe ...

  9. storm操作zookeeper源码分析-cluster.clj

    storm操作zookeeper的主要函数都定义在命名空间backtype.storm.cluster中(即cluster.clj文件中).backtype.storm.cluster定义了两个重要p ...

随机推荐

  1. javascript中时间的手动创建date的方式

    new Date("month dd,yyyy hh:mm:ss"); new Date("month dd,yyyy"); new Date(yyyy,mth ...

  2. 智能车学习(十三)——角度控制

    一.手册代码以及图示 二.流程说明 1.角度计算函数说明 //===================================================================== ...

  3. 第一个vs2013控制台程序

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. 廖雪峰js教程笔记10 浏览器对象

    JavaScript可以获取浏览器提供的很多对象,并进行操作. window window对象不但充当全局作用域,而且表示浏览器窗口. window对象有innerWidth和innerHeight属 ...

  5. 《DSP using MATLAB》示例Example4.15

    代码: b = [1/3, 1/3, 1/3]; a = [1, -0.95, 0.9025]; % x(n) y(n) coefficient [R, p, C] = residuez(b,a) M ...

  6. jQuery入门第二天

    3种选择器:元素选择器:$("button").class选择器:$(".btn").id选择器:$("#target1"). <sc ...

  7. js、PHP将分数字符串转换为小数

    PHP:$s = "1/3"; $s = str_replace(array('[',']','mod'),array('(',')','%'),$s);//将原三字符串中的只有在 ...

  8. 【转】如果成为一个牛比的BI售前

    转自:天善智能 没有最厉害,只有更厉害啊.也没有一定哪儿厉害,会因人定制各有不同啊.打个比方,如果你长得很庄重,年长,光头或布满银丝,然后以专业的态度,以饱满的激情去跟你客户宣讲,杀伤力巨大.所以,卖 ...

  9. Learning storm book 笔记8-Log Processing With Storm

    有代码的书籍看起来就是爽,看完顺便跑个demo,感觉很爽! 场景分析 主要是利用apache的访问日志来进行分析统计 如用户的IP来源,来自哪个国家或地区,用户使用的Os,浏览器等信息,以及像搜索的热 ...

  10. Visual Studio: How to change ipch path in Visual Studio 2010 (.sdf, *.opensdf, ...)

    Link: http://stackoverflow.com/questions/4315681/how-to-change-ipch-path-in-visual-studio-2010 引用: T ...