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