zoukankan      html  css  js  c++  java
  • 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> 可以打开客户端测试使用 

  • 相关阅读:
    target runtime apache v6.0 not defined解决
    java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;
    The valid characters are defined in RFC 7230 and RFC 3986问题
    invalid END header解决方法
    You have more than one version of ‘org.apache.commons.logging.Log’ visible, which is not allowed问题解决
    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    在eclipse中import java web项目时遇到的一些问题并将该项目通过tomcat发布
    java byte转string 涉及到字节流中有中文
    spring+mybatis框架搭建时遇到Mapped Statements collection does not contain value for...的错误
    试试看读一下Zepto源码
  • 原文地址:https://www.cnblogs.com/eRrsr/p/5979235.html
Copyright © 2011-2022 走看看