• 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> 可以打开客户端测试使用 

  • 相关阅读:
    【刷题】LOJ 6009 「网络流 24 题」软件补丁
    lab 项目
    js内的时间戳指的是当前时间到1970年1月1日00:00:00 UTC对应的毫秒数,和 unix时间戳是对应的秒数,差了1000倍
    js 原生: 身份证脱敏、唯一随机字符串uuid、对于高 index 元素的隐藏与显示
    diy 滚动条 样式 ---- 核心代码
    PC_后台管理系统
    三端兼容项目
    阿里小程序
    到位App_jQuery_art-template
    一步一步 copy163: 网易严选 ---- vue-cli
  • 原文地址:https://www.cnblogs.com/eRrsr/p/5979235.html
Copyright © 2020-2023  润新知