本文介绍一下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

源码编译

README_packaging.md文件

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

编译环境

  • java-1.8.0_102
  • maven-3.3.9

maven编译

mvn clean install -DskipTests

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

需要在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
  • 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

创建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

如果是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 &

启动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

在idea中启动

参数配置

配置说明

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

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

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

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=./tmp/data
    clientPort=2181

VM Option:

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

Program Arguments:

./tmp/conf/zoo.cfg

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

类找不到问题

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

zookeeper源码(02)源码编译启动及idea导入的更多相关文章

  1. 浅析libuv源码-编译启动

    面试的间隙回头复习了一下node,感觉node就像一个胶带,把V8和libuv粘在了一起. V8毫无疑问,负责解析执行JavaScript,相当于语言层面的桥梁:而libuv则是负责操作系统底层功能的 ...

  2. ZooKeeper 分布式锁 Curator 源码 02:可重入锁重复加锁和锁释放

    ZooKeeper 分布式锁 Curator 源码 02:可重入锁重复加锁和锁释放 前言 加锁逻辑已经介绍完毕,那当一个线程重复加锁是如何处理的呢? 锁重入 在上一小节中,可以看到加锁的过程,再回头看 ...

  3. MatrixOne从入门到实践02——源码编译

    MatrixOne从入门到实践--源码编译 ​ 在部署MatrixOne前,我们可能会比较纠结使用哪个版本合适,MatrixOne在github上有各个版本的Releases,包含源码包和适用于Lin ...

  4. 鸿蒙内核源码分析(源码注释篇) | 鸿蒙必定成功,也必然成功 | 百篇博客分析OpenHarmony源码 | v13.02

    百篇博客系列篇.本篇为: v13.xx 鸿蒙内核源码分析(源码注释篇) | 鸿蒙必定成功,也必然成功 | 51.c.h .o 几点说明 kernel_liteos_a_note | 中文注解鸿蒙内核 ...

  5. 【图解源码】Zookeeper3.7源码分析,包含服务启动流程源码、网络通信源码、RequestProcessor处理请求源码

    Zookeeper3.7源码剖析 能力目标 能基于Maven导入最新版Zookeeper源码 能说出Zookeeper单机启动流程 理解Zookeeper默认通信中4个线程的作用 掌握Zookeepe ...

  6. Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装

    原文:Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装 Linux内核分析(一) 从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底 ...

  7. 【MySQL源码】源码安装和启动mysql

    --[MySQL源码]源码安装和启动mysql --------------------------------------2014/08/19 本机环境:ubuntu12.04,fedora-17 ...

  8. Android源码的下载、编译与导入到Android Studio【转】

    本文转载自:http://wl9739.github.io/2016/05/09/Android%E6%BA%90%E7%A0%81%E7%9A%84%E4%B8%8B%E8%BD%BD%E3%80% ...

  9. vim7.4官方源码在vs2013的编译方法及问题总结

    vim7.4发布也有一段时候了,也该是把之前编译的7.3重新编译一下了,于是考虑着到最新的visual studio 2013编译一下,也顺便看看有没有其它问题. 1.安装vs2013,这个应该不用说 ...

  10. Flink 源码解析 —— 源码编译运行

    更新一篇知识星球里面的源码分析文章,去年写的,周末自己录了个视频,大家看下效果好吗?如果好的话,后面补录发在知识星球里面的其他源码解析文章. 前言 之前自己本地 clone 了 Flink 的源码,编 ...

随机推荐

  1. flower插件-监视celery

    安装和使用: https://flower.readthedocs.io/en/latest/install.html#installation https://github.com/mher/flo ...

  2. 解密Prompt系列22. LLM Agent之RAG的反思:放弃了压缩还是智能么?

    已经唠了三章的RAG,是时候回头反思一下,当前的RAG是解决幻觉的终点么?我给不出直接的答案,不过感觉当前把RAG当作传统搜索框架在大模型时代下的改良,这个思路的天花板高度有限~ 反思来源于对RAG下 ...

  3. Python——第四章:内置函数(下)

    内置函数的使用方法: locals:函数会以字典的类型返回当前位置的所有局部变量 globals:函数会以字典的类型返回全部局部变量 zip: 可以把多个可迭代内容进行合并 sorted: 排序 fi ...

  4. Git commit emoji 对照表

    emoji emoji代码 commit说明 (调色板) :art: 改进代码结构/代码格式 ️ (闪电) :zap: 提升性能 (赛马) :racehorse: 提升性能 (火焰) :fire: 移 ...

  5. 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 06.敲定AI——游戏框架拓展和细节优化

    斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 这篇文章对应课程13课, 50~54节.虽然标题是敲定AI,实际内容和AI关联并不大,主要工作是对游戏内各种细节 ...

  6. 这一次,弄明白JS中的文件相关(一):概念篇

    概念是学习的基础.在学习JS中的文件操作之前,先把文件相关的各种概念搞清楚,很有好处. 1. 二进制: 计算机硬件仅能处理和存储二进制数据,所以不管是你正在写的代码,还是你硬盘里的小姐姐,都是以二进制 ...

  7. .NET技术分享日活动-202107

    2021年7月3日下午,个人组织举办了山东地区的第二次山东.NET技术分享日活动.围绕互联网技术.大数据.机器学习.业务实践等方向进行创新技术的实践分享. 本次技术分享日活动面向了山东地区广大的.NE ...

  8. 云原生批量计算引擎 Volcano社区v1.8.0版本正式发布

    本文分享自华为云社区<云原生批量计算引擎 Volcano社区v1.8.0版本正式发布>,作者: 云容器大未来. 北京时间2023年8月17日,Volcano 社区 v1.8.0 版本正式发 ...

  9. 数仓ETL系统:给强大的“心脏”配上“超级流水线”

    摘要:在数据仓库平台建设过程中,数据的加载.卸载,各层数据模型之间的数据流转,业务规则的实现等等数据加工过程都会以ETL任务的方式实现. 一.前言 在数据仓库平台建设过程中,数据的加载.卸载,各层数据 ...

  10. 跟我学Python图像处理丨5种图像阈值化处理及算法对比

    摘要:本篇文章主要讲解Python调用OpenCV实现图像阈值化处理操作,包括二进制阈值化.反二进制阈值化.截断阈值化.反阈值化为0.阈值化为0. 本文分享自华为云社区<[Python图像处理] ...