附录:kafka源码启动

2023-11-18

本文以源码2.8为例

准备如下

  • idea 2019.1.4

  • jdk 1.8

  • scala 2.12.8

  • gradle 6.8.1

  • zookeeper 3.4.10

  • kafka2.8源码

注意:以下安装都需要装在没有空格的路径上,比如D:\Program Files (x86) 就带空格,是不行的

idea 2019.1.4 安装

  • 地址如下:https://www.jetbrains.com.cn/en-us/idea/download/other.html

  • 选择如下版本下载
    图一

  • 安装就按常规的选下一步即可,安装之后需要再添加scala及gradle的插件,如下图
    图二图三

scala 2.12.8 安装

  • 地址如下:https://www.scala-lang.org/download/2.12.8.html

  • 选择如下文件下载
    图四

  • 安装就按常规的选下一步即可,安装之后还需要设置环境变量,如下图:
    图五

  • 安装成功后验证是否成功:scala -version
    图六

gradle 6.8.1 安装

  • 地址如下:https://services.gradle.org/distributions/

  • 选择如下文件下载:
    图七

  • 不用安装,直接解压缩,安装之后还需要设置环境变量,如下图
    GRADLE_HOME D:\programFiles\gradle\gradle-6.8.1-bin\gradle-6.8.1
    %GRADLE_HOME%\bin
    图八

图九

  • 安装之后验证是否成功:gradle -v
    图十

zookeeper 3.4.10 安装

  • 地址如下:https://archive.apache.org/dist/zookeeper/

  • 选择如下文件下载:
    图十一

  • 不用安装,直接解压缩

  • 这里示例集群的方式搭建zk
    1、/conf 目录下复制三个zoo_sample.cfg,分别命名zoo.cfg、zoo2.cfg、zoo3.cfg
    修改zoo.cfg如下:

dataDir=/tmp/zookeeper/data1
clientPort=2181
server.1=127.0.0.1:2280:2281
server.2=127.0.0.1:2380:2381
server.3=127.0.0.1:2480:2481

修改zoo2.cfg如下:

dataDir=/tmp/zookeeper/data2
clientPort=2182
server.1=127.0.0.1:2280:2281
server.2=127.0.0.1:2380:2381
server.3=127.0.0.1:2480:2481

修改zoo3.cfg如下:

dataDir=/tmp/zookeeper/data3
clientPort=2183
server.1=127.0.0.1:2280:2281
server.2=127.0.0.1:2380:2381
server.3=127.0.0.1:2480:2481

2、/bin目录下复制两个zkEnv.cmd,分别命名zkEnv2.cmd、zkEnv3.cmd
修改zkEnv.cmd如下:

set ZOOCFG=%ZOOCFGDIR%\zoo.cfg

修改zkEnv2.cmd如下:

set ZOOCFG=%ZOOCFGDIR%\zoo2.cfg

修改zkEnv3.cmd如下:

set ZOOCFG=%ZOOCFGDIR%\zoo3.cfg

3、/bin目录下复制两个zkServer.cmd,分别命名zkServer2.cmd、zkServer3.cmd
修改zkServer.cmd如下:

call “%~dp0zkEnv.cmd”

修改zkServer2.cmd如下:

call “%~dp0zkEnv2.cmd”

修改zkServer3.cmd如下:

call “%~dp0zkEnv3.cmd”

4、在第一步配置zoo.cfg时有配置dataDir,我们将三个节点的日志目录分别配置在了三个目录下,所以我们还需要在\tmp\zookeeper新建三个文件夹
分别命名为data1、data2、data3,然后在新建的目录下分别新建三个文件,命名为myid,文件中分别写入1,2,3
以data1为例

图十二
图十三

5、分别启动三个zkServer.cmd,无异常就说明集群启动成功

kafka2.8源码

  • 地址如下:- https://github.com/apache/kafka.git

  • 源码下载完成后切到2.8分支

  • 设置gradle路径以及jdk
    图十四

  • 修改gradle.properties中scala版本

scalaVersion=2.12.8

  • 修改build.gradle中的 mavenCentral(),jcenter()替换成如下maven路径

maven {
url ‘https://maven.aliyun.com/nexus/content/groups/public/’
}
maven {
url ‘https://maven.aliyun.com/nexus/content/repositories/jcenter’
}

  • 点击gradle开始导入项目
    图十五

    如下提示就说明导入成功
    图十六

  • 接着build项目,在这个过程中会根据部分json文件生成data文件
    图十七

  • 修改server.properties的zk配置

zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

  • 添加kafka启动application
    图十八

  • 若提示代码编译失败,代码位置为org.apache.kafka.common.utils.ConfigUtils#translateDeprecatedConfigs(java.util.Map<java.lang.String,
    T>, java.lang.String[][]) ,则修改如下:

    public static <T> Map<String, T> translateDeprecatedConfigs(Map<String, T> configs, String[][] aliasGroups) {
        Map<String, List<String>> map  = Stream.of(aliasGroups)
                .collect(Collectors.toMap(x -> x[0],
                x -> Stream.of(x).skip(1).map(a->a.toString()).collect(Collectors.toList())));
        return translateDeprecatedConfigs(configs, map);
    }
  • 若启动失败,则添加如下配置

1、dependencies.gradle中slf4jlog4j的下面添加

slf4jSimple: “org.slf4j:slf4j-simple:$versions.slf4j”,

2、build.gradle中782行添加如下

compile libs.slf4jSimple
compile “com.alibaba:fastjson:1.2.66”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

附录:kafka源码启动 的相关文章

  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 玩:将表单字段绑定到双精度型?

    也许我只是忽略了一些明显的事情 但我无法弄清楚如何将表单字段绑定到 Play 控制器中的双精度型 例如 假设这是我的模型 case class SavingsGoal timeframeInMonths Option Int amount
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • 分析 sbt 构建

    我的 sbt 构建需要很长时间 它又大又复杂 很难知道从哪里开始清理 看起来 sbt 保留了很多关于构建结构的元数据 包括相互依赖关系 命名任务 范围界定等 有了所有这些元数据 似乎很容易跳入并测量每个不同任务 及其范围 花费的时间 在代码
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用

随机推荐