本文以源码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”