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

 

 

posted @ 2014-04-22 16:10  balaamwe  阅读(1870)  评论(0编辑  收藏  举报