zoukankan      html  css  js  c++  java
  • ZooKeeper安装配置

    1.什么是ZooKeeper?

    Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。

    注意,这是一个协调平台,不是管理平台。类似于红绿灯,可以协调帮助道路通畅。

    ZooKeeper起到了一个协调各个框架的作用。它并不是直接为我们的数据提供服务。

    ZooKeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,他负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,ZooKeeper就将负责通知已经在ZooKeeper上注册的那些观察者做出相应的反应。

    所以,ZooKeeper = 文件系统 + 通知机制

    2.ZooKeeper集群特点

    1)Zookeeper:一个领导者(leader),多个跟随者(follower)组成的集群。 2)Leader负责进行投票的发起和决议,更新系统状态 3)Follower用于接收客户请求并向客户端返回结果,在选举Leader过程中参与投票 4)集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。 5)全局数据一致:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的。 6)更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行。 7)数据更新原子性,一次数据更新要么成功,要么失败。 8)实时性,在一定时间范围内,client能读到最新数据。

    3.ZooKeeper的数据结构

    ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识。

    4.安装配置ZooKeeper

    1、解压ZooKeeper文件到/opt/module/下
    tar -xzvf zookeeper-3.4.10.tar.gz -C /opt/module/
    

    2、配置环境变量
    编辑sudo vim /etc/profile.d/my_env.sh
    在内部添加如下内容:

    #ZOOKEEPER_HOME
    export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.10
    export PATH=$PATH:$ZOOKEEPER_HOME/bin
    

    然后重新打开一个会话,以使环境变量生效。可以通过在命令行输入zk然后按table键看是否有补全备选项来测试ZooKeeper安装是否成功。

    然后分发环境变量

    xsync /etc/profile.d/my_env.sh
    

    3、配置ZooKeeper
    进入配置文件的文件夹/opt/module/zookeeper-3.4.10/conf,,并将zoo_sample.cfg重命名为zoo.cfg:

    cd /opt/module/zookeeper-3.4.10/conf
    
    mv zoo_sample.cfg zoo.cfg
    

    其实现在ZooKeeper已经可以单机启动了。(因为ZooKeeper默认的配置就是单机模式)

    接下来继续配置ZooKeeper的集群模式,因为单机模式没人用…………

    4、编辑zoo.cfg文件,vim zoo.cfg

    将dataDir=/tmp/zookeeper更改为:(该目录的唯一要求是当前用户对该文件夹具有写权限)

    dataDir=/opt/module/zookeeper-3.4.10/zkData
    

    5、配置集群机器,每台机器分配一个不同的Serverid
    在zoo.cfg配置文件最后添加如下内容:

    server.2=hadoop102:2888:3888
    server.3=hadoop103:2888:3888
    server.4=hadoop104:2888:3888
    

    server.x中的x即为每台机器的id,对于Serverid只有一个要求,即每台机器的serverid需各不相同即可。记住自己设置的id。

    以上配置2,3,4就是Serverid

    6、在zkData文件夹里新建一个myid文件,内容是本机的Serverid

    没有zkData文件夹的话,创建一个zkData文件夹:

    cd /opt/module/zookeeper-3.4.10
    mkdir zkData
    

    然后在zkData文件夹中新建文件myid

    在myid中写入本机的id,当前机器serverid是2,所以myid文件中只写入2。

    7、(可选配置)配置Zookeeper的LogDIR:配置bin/zkEnv.sh文件

    vim /opt/module/zookeeper-3.4.10/bin/zkEnv.sh
    

    ZOO_LOG_DIR="."改为ZOO_LOG_DIR="/opt/module/zookeeper-3.4.10/logs"

    或者:

    ZOO_LOG_DIR="${ZOOKEEPER_HOME}/logs"
    

    8、分发ZooKeeper到集群各个机器。

    xsync /opt/module/zookeeper-3.4.10/
    

    9、到集群的另外两台机器中分别修改其serverid

    echo 3 > /opt/module/zookeeper-3.4.10/zkData/myid
    
    echo 4 > /opt/module/zookeeper-3.4.10/zkData/myid
    

    10、启动

    ZooKeeper集群官方没有给群启脚本,所以需要在每台机器上同时发送执行命令:

    zkServer.sh start
    

    关闭同理:

    zkServer.sh stop
    

    然后可以通过命令:zkServer.sh status来查看集群中各个机器的状态,其中follower为从机,leader为主机。

  • 相关阅读:
    CSUFT 1002 Robot Navigation
    CSUFT 1003 All Your Base
    Uva 1599 最佳路径
    Uva 10129 单词
    欧拉回路
    Uva 10305 给任务排序
    uva 816 Abbott的复仇
    Uva 1103 古代象形文字
    Uva 10118 免费糖果
    Uva 725 除法
  • 原文地址:https://www.cnblogs.com/zhqin/p/11906106.html
Copyright © 2011-2022 走看看