• zookeeper源码(02)源码编译启动及idea导入


    本文介绍一下zookeeper-3.9.0源码下载、编译及本地启动。

    下载源码

    git clone https://gitee.com/apache/zookeeper.git
    
    cd zookeeper
    git checkout release-3.9.0
    git checkout -b release-3.9.0
    
    • 1
    • 2
    • 3
    • 4
    • 5

    源码编译

    README_packaging.md文件

    该文件介绍了编译zookeeper需要的环境和命令。

    编译环境

    • java-1.8.0_102
    • maven-3.3.9

    maven编译

    mvn clean install -DskipTests
    
    • 1

    zookeeper-assembly/target/apache-zookeeper-3.9.0-bin.tar.gz 包目录结构:

    • /bin - 可执行文件及脚本
    • /conf - 配置文件
    • /lib - zookeeper包及依赖的包
    • /docs - 文档

    构建C客户端

    To also build the C client, you need to activate the full-build profile:

    mvn clean -Pfull-build
    mvn install -Pfull-build -DskipTests
    
    • 1
    • 2

    需要在linux平台编译,windows平台会出错。

    java命令启动zookeeper

    发布包的启动方式在上一篇文章已经介绍,此处介绍一下使用java命令启动zookeeper服务。

    zookeeper-server/target目录

    进入zookeeper-server/target目录:

    $ ll
    drwxr-xr-x 1 xuguofeng 197121       0 Aug 16 00:14 lib/
    -rw-r--r-- 1 xuguofeng 197121 1359096 Aug 16 00:14 zookeeper-3.9.0.jar
    
    • 1
    • 2
    • 3
    • lib - 依赖jar
    • zookeeper-3.9.0.jar - 包含了zookeeper的类

    创建zoo.cfg配置文件

    在zookeeper-server/target下创建conf目录,创建zoo.cfg配置文件:

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=data
    clientPort=2181
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建logs目录

    启动zookeeper服务

    java \
    -Dzookeeper.datadir.autocreate=true \
    -Dzookeeper.log.dir=./logs \
    -Dzookeeper.log.file=zookeeper.log \
    -XX:+HeapDumpOnOutOfMemoryError \
    -Xmx1000m -Xms1000m \
    -cp zookeeper-3.9.0.jar;./lib/*;./conf \
    org.apache.zookeeper.server.quorum.QuorumPeerMain ./conf/zoo.cfg
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    如果是linux平台,则使用如下命令:

    nohup java \
    -Dzookeeper.datadir.autocreate=true \
    -Dzookeeper.log.dir=./logs \
    -Dzookeeper.log.file=zookeeper.log \
    -XX:+HeapDumpOnOutOfMemoryError \
    -XX:OnOutOfMemoryError='kill -9 %p' \
    -Xmx1000m -Xms1000m \
    -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:./lib \
    -cp ./conf:zookeeper-3.9.0.jar \
    org.apache.zookeeper.server.quorum.QuorumPeerMain ./conf/zoo.cfg > ./logs/zookeeper.out 2>&1 < /dev/null &
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    启动zookeeper客户端

    java \
    -Dzookeeper.datadir.autocreate=true \
    -Dzookeeper.log.dir=./logs \
    -Dzookeeper.log.file=zookeeper.log \
    -Dzookeeper.log.threshold=INFO \
    -Xmx256m -Xms256m \
    -cp zookeeper-3.9.0.jar;./lib/*;./conf \
    org.apache.zookeeper.ZooKeeperMain
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在idea中启动

    参数配置

    在这里插入图片描述

    配置说明

    在工作目录下创建tmp/conf目录:

    • 把conf/logback.xml拷贝到tmp/conf目录下

    • 在tmp/conf目录下创建zoo.cfg配置文件

      tickTime=2000
      initLimit=10
      syncLimit=5
      dataDir=./tmp/data
      clientPort=2181
      
      • 1
      • 2
      • 3
      • 4
      • 5

    VM Option:

    -Dzookeeper.datadir.autocreate=true -Dzookeeper.log.dir=./tmp/logs -Dzookeeper.log.file=zookeeper.log -Xmx1000m -Xms1000m
    
    • 1

    Program Arguments:

    ./tmp/conf/zoo.cfg
    
    • 1

    把./tmp/conf目录添加到classpath中。

    类找不到问题

    如果直接启动,可能出现类找不到的问题,在pom.xml中找到对应的依赖,将provided注释掉即可。

  • 相关阅读:
    代码随想录训练营 dp
    Pytorch整体工作流程代码详解(新手入门)
    如何评价GPT-4o?
    ES6 - 默认参数
    jenkins 中文乱码及执行报错
    关于mysql已有主从环境得主从重配置
    maven assembly打包生成Java应用启动脚本bat和sh
    iPhone 15 换 USB-C 或藏“心机”,爆料者:只有 Pro 版提速,其他限速 USB 2.0
    嵌入式学习笔记(47)Nand的常见操作及流程分析
    SpringBoot SpringBoot 基础篇 4 基于 SpringBoot 的SSMP 整合案例 4.19 条件查询
  • 原文地址:https://blog.csdn.net/xuguofeng2016/article/details/133984428