zoukankan      html  css  js  c++  java
  • zookeeper 入门(一)

    1 下载安装

    wget http://mirrors.hust.edu.cn/apache/zookeeper/stable/zookeeper-3.4.6.tar.gz
    cp
    zookeeper-3.4.6.tar.gz /usr/local
    cd /usr/local
    tar zxvf zookeeper-3.4.6.tar.gz
    ln -s /usr/local/zookeeper-3.4.6 /usr/local/zookeeper

    zookeeper 管理脚本

    ls -al /usr/local/zookeeper/bin
    ####################
    README.txt
    zkCleanup.sh
    zkCli.cmd
    zkCli.sh
    zkEnv.cmd
    zkEnv.sh
    zkServer.cmd
    zkServer.sh

    2  分析启动过程

    zookeeper 启动命令

    /usr/local/zookeeper/bin/zkServer.sh start 

    这里简单分析下启动脚本 zkServer.sh

    .......
    
    ZOOBIN="${BASH_SOURCE-$0}"              
    ZOOBIN="$(dirname "${ZOOBIN}")"
    ZOOBINDIR="$(cd "${ZOOBIN}"; pwd)"         //获得当前脚本文件所在路径  本例中 ZOOBINDIR 的值为 /usr/local/zookeeper/bin
    
    if [ -e "$ZOOBIN/../libexec/zkEnv.sh" ]; then
      . "$ZOOBINDIR/../libexec/zkEnv.sh"
    else
      . "$ZOOBINDIR/zkEnv.sh"                  //执行环境配置脚本
    fi

    打开 zkEnv.sh

    ZOOBINDIR="${ZOOBINDIR:-/usr/bin}"                //如果ZOOBINDIR 为空的话 那么默认指为 /usr/bin
    ZOOKEEPER_PREFIX="${ZOOBINDIR}/.."                
    
    if [ "x$ZOOCFGDIR" = "x" ]
    then
      if [ -e "${ZOOKEEPER_PREFIX}/conf" ]; then      //如果前面 ZOOKEEPER_PREFIX/conf 存在 
        ZOOCFGDIR="$ZOOBINDIR/../conf"                //那么配置文件目录 就为该值 在本例中 为 /usr/local/zookeeper/conf
      else
        ZOOCFGDIR="$ZOOBINDIR/../etc/zookeeper"       
      fi
    fi
    
    if [ -f "${ZOOCFGDIR}/zookeeper-env.sh" ]; then
      . "${ZOOCFGDIR}/zookeeper-env.sh"
    fi
    
    if [ "x$ZOOCFG" = "x" ]
    then
        ZOOCFG="zoo.cfg"                              //配置文件默认名称  zoo.cfg
    fi
    
    ZOOCFG="$ZOOCFGDIR/$ZOOCFG"                       //完整配置路径   /usr/local/zookeeper/conf/zoo.cfg
    ......
    //后面代码主要是用来声明 classpath

    回到zkServer.sh

    .......
    //看这段代码
    if [ "x$2" != "x" ]                  //如果启动文件 输入了第2个参数 那么配置文件使用指定的文件名         
    then
        ZOOCFG="$ZOOCFGDIR/$2"
    fi

    再往下面看 

    # if we give a more complicated path to the config, don't screw around in $ZOOCFGDIR
    if [ "x$(dirname "$ZOOCFG")" != "x$ZOOCFGDIR" ]
    then
        ZOOCFG="$2"
    fi

    定义了pid 文件路径和  data路径

    if [ -z "$ZOOPIDFILE" ]; then
        ZOO_DATADIR="$(grep "^[[:space:]]*dataDir" "$ZOOCFG" | sed -e 's/.*=//')"
        if [ ! -d "$ZOO_DATADIR" ]; then
            mkdir -p "$ZOO_DATADIR"
        fi
        ZOOPIDFILE="$ZOO_DATADIR/zookeeper_server.pid"
    else
        # ensure it exists, otw stop will fail
        mkdir -p "$(dirname "$ZOOPIDFILE")"
    fi

    3. 单机启动zookeeper服务

    先回到步骤1 安装成功后 做以下操作 

    cd /usr/local/zookeeper/conf/
    cp zoo_sample.cfg zoo.cfg                 //zoo.cfg 就是启动需要读取的配置文件
    mkdir -p /usr/local/zookeeper/data

    打开zoo.cfg

    # The number of milliseconds of each tick
    tickTime=2000                            
    # The number of ticks that the initial 
    # synchronization phase can take
    initLimit=10
    # The number of ticks that can pass between 
    # sending a request and getting an acknowledgement
    syncLimit=5
    # the directory where the snapshot is stored.
    # do not use /tmp for storage, /tmp here is just 
    # example sakes.
    dataDir=/usr/local/zookeeper/data
    # the port at which the clients will connect
    clientPort=2181

    启动 zookeeper 服务

    /usr/local/zookeeper/bin/zkServer.sh start

    启动客户端

    /usr/local/zookeeper/bin/zkCli.sh -server 127.0.0.1
  • 相关阅读:
    基于SpringMVC框架使用ECharts3.0实现堆叠条形图的绘制(下篇)
    使用Poi对EXCLE的导入导出
    使用JXL对EXCLE的导入导出
    在线API
    Java中使用poi导入、导出Excel
    SpringMVC框架下使用jfreechart绘制折线图,柱状图,饼状图
    让div在屏幕中居中(水平居中+垂直居中)的几种方法
    如何使用Canvas及动画实现
    $state、$watch、$scope、$rootScope分别是什么?
    【修真院“善良”系列之三】技术面试的时候该怎么样介绍自己?
  • 原文地址:https://www.cnblogs.com/balaamwe/p/3680737.html
Copyright © 2011-2022 走看看