附录:kafka源码启动

144 阅读2分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路。 本文以源码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 安装

  • 地址如下:www.jetbrains.com.cn/en-us/idea/…

  • 选择如下版本下载 图一

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

scala 2.12.8 安装

  • 地址如下:www.scala-lang.org/download/2.…

  • 选择如下文件下载 图四

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

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

gradle 6.8.1 安装

  • 地址如下:services.gradle.org/distributio…

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

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

图九

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

zookeeper 3.4.10 安装

  • 地址如下:archive.apache.org/dist/zookee…

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

  • 不用安装,直接解压缩

  • 这里示例集群的方式搭建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源码

  • 地址如下:- github.com/apache/kafk…

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

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

  • 修改gradle.properties中scala版本

scalaVersion=2.12.8

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

maven { url 'maven.aliyun.com/nexus/conte…' } maven { url 'maven.aliyun.com/nexus/conte…' }

  • 点击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"