zoukankan      html  css  js  c++  java
  • 【ZooKeeper】ZooKeeper源码编译

    环境准备

    • Maven:3.6.3
    • Jdk:1.8.0_181
    • idea:2021.1.1 Community Edition(社区版)

    1、下载ZooKeeper源码

      官网地址:https://github.com/apache/zookeeper

      选择需要的版本下载。

      本例下载的是 release-3.6.0 版本,下载完后解压。

      

    2、使用Idea打开项目,进行编译

    • 导入Idea:File --> Open --> 选择ZooKeeper项目目录 zookeeper-3.6.0

            

    • 编译命令:mvn clean package -Dmaven.test.skip=true

      

    可能出现的错误

      问题1[ERROR] Failed to execute goal org.codehaus.mojo:properties-maven-plugin:1.0.0:read-project-properties (default) on project zookeeper: Properties could not be loaded from File: /Users/h__d/Documents/git-repository/zookeeper-3.6.0/zookeeper-server/src/main/resources/git.properties -> [Help 1]

        分析:缺少了 zookeeper-3.6.0/zookeeper-server/src/main/resources/git.properties 文件,而properties-maven-plugin需要使用此文件

        解决:添加 git.properties 文件,内容如下,最好不要注释插件,否则还会有问题

    # git提交id(编一个,或使用github上的id)
    git.commit.id=9758d25
    # 构建时间
    build.time=2021-05-26

    3、运行ZooKeeper服务端

      1)添加配置文件,复制conf/zoo_sample.cfg,重命名文zoo.cfg

        

      2)配置日志配置文件:将conf/log4j.properties 复制到 zookeeper-server/src/main/resources 下面

        且在zookeeper-server下src/main/resource上,鼠标右键,Mark Directory as -> Root Resources

        

      3)找到服务端启动类

        分析 bin/zkServer.sh 启动脚本 -> 找到 start 启动参数对应的逻辑 -> 找到主启动类参数:ZOOMAIN -> ZOOMAIN的值:org.apache.zookeeper.server.quorum.QuorumPeerMain

        

        找到 ZOOMAIN="org.apache.zookeeper.server.quorum.QuorumPeerMain",QuorumPeerMain即为服务端主启动类

        ZOOCFG="$2" 可知是通过外部传参进来的

      4)运行QuorumPeerMain服务端主启动类,且进行运行配置

            

    可能出现的错误

      问题1Exception in thread "main" java.lang.NoClassDefFoundError: com/codahale/metrics/Reservoir

          at org.apache.zookeeper.metrics.impl.DefaultMetricsProvider$DefaultMetricsContext.lambda$getSummary$2(DefaultMetricsProvider.java:126)

        分析:因为有些类引入是provided,把(zookeeper-3.6.0/zookeeper-server/pom.xml)相关的provided去掉就行了。这里jline除外

        解决:把zookeeper-server/pom.xml中的  <scope>provided</scope> 去掉

    4、运行ZooKeeper客户端

      1)找到客户端启动类

        分析 bin/zkCli.sh 客户端启动脚本 -> 代码很少,看到 Java类:org.apache.zookeeper.ZooKeeperMain

         

       2)运行 ZooKeeperMain 客户端启动类,且进行运行配置

        

      3)运行效果

        

  • 相关阅读:
    QT,QVector 基本用法,遍历[实例讲解]
    QT boolinq
    Qt532.QString_填充字符
    QT AES加密
    允许ubuntu下mysql远程连接
    Curl参数一览
    PHP实现http与https转化
    LINUX查看硬件配置命令
    使用.htaccess的时候服务器出现500错误(在配置后台时出现)
    64位win7旗舰版搭建apache+php+mysql开发环境
  • 原文地址:https://www.cnblogs.com/h--d/p/14814812.html
Copyright © 2011-2022 走看看