关于kafka:2kafka-280-源码环境搭建

37次阅读

共计 3023 个字符,预计需要花费 8 分钟才能阅读完成。

装置 JDK
JDK 的装置非常简单,这里咱们装置 JDK 8 即可(尽管 JDK 当初的新版本是 16,然而国内生产环境还有相当一大部分还是停留在 8 这个版本上)。首先到 JDK 下载地址下载对应零碎的 JDK 安装包即可,这里我应用的是 mac 零碎,下载 dmg 文件即可。

下载实现之后,双击 dmg 文件,始终下一步即可装置实现。

装置 scala
咱们这里装置的 scala 版本是 2.13.1 版本 scala 2.13.1 下载地址。下载实现之后,间接解压到当前目录下即可。

下载 gradle
kafka 的代码依赖是通过 gradle 治理的,咱们须要从 下载地址 下载 gradle 6.8 的压缩包,而后间接解压到当前目录下即可。

配置环境变量
装置完 JDK、scala 以及 gradle 之后,咱们关上命令行,跳转到以后用户的根目录,关上 bash_profile

1
sudo vim .bash_profile
在 bash_profile 文件中配置 JAVA_HOME、SCALA_HOME、GRADLE_HOME 三个环境变量,并将它们增加到 PATH 变量上,如下图所示:

接下来,保留 bash_profile 文件,并执行 source 命令刷新文件:

1
source .bash_profile
最初,执行 java -version,scala -version 以及 gradle -version 命令,检查一下环境变量是否配置胜利,失去上面张图展现的输入,即示意配置胜利:

装置 Zookeeper
kafka 在 2.8.0 版本之前是依赖 Zookeeper 来存储元数据信息的,从 2.8.0 版本开始,kafka 不再强依赖 Zookeeper,而是本人实现了 raft 协定来存储元数据。

这里咱们仍旧搭建一个伪分布式的 Zookeeper 环境。首先咱们去 Zookeeper 官网下载 3.6.3 版本的压缩包 Zookeeper-3.6.3 下载地址。下载实现之后,咱们间接解压 apache-zookeeper-3.6.3-bin.tar.gz 包到当前目录。

而后进入 ${ZOOKEEPER_HOME}/conf 目录,拷贝 zoo_sample.cfg 文件并重命名为 zoo.cfg:

1
cp zoo_sample.cfg zoo.cfg
最初,进入 ${ZOOKEEPER_HOME}/bin 目录,并启动 Zookeeper 服务:

1
./zkServer.sh start
启动 Zookeeper 服务胜利的话,会有下图的输入:

下载 kafka 源码
上述根底依赖装置实现之后,咱们就能够正式开始搭建 kafka 的源码环境了。

首先,咱们执行 git clone 命令下载 kafka 源码:

1
git clone https://github.com/apache/kaf…
下载实现之后,咱们进入 kafka 源码目录,执行 git checkout 命令检出 origin/2.8 分支:

1
git checkout -b 2.8 origin/2.8
为了将 kafka 源码导入到 IDEA 编辑器中,咱们须要执行 gradle idea 命令,这个命令会下载 kafka 的相干依赖,耗时比拟长,执行胜利之后,会有如下的输入:

最初,将 kafka 源码导入到 IDEA 中,失去的我的项目后果如下图所示:

在 kafka 中,很多 request 和 response 类都是在编译过程中生成的,上面咱们须要执行一下 ./gradlew jar 来生成这些类,该命令执行工夫较长,请急躁期待。

./gradlew jar 命令执行实现之后,咱们须要在 IDEA 中找到下图几个模块中的 generated 目录,并将其中 java 目录增加到 classpath 中

client 模块:
client 模块
core 模块:
client 模块
metadata 模块:
client 模块
raft 模块:
client 模块
验证环境
上面咱们来验证一下 kafka 源码环境是否搭建胜利。

首先,咱们将 conf 目录下的 log4j.properties 配置文件拷贝到 src/main/scala 目录下,如下图所示:
client 模块

接下来,咱们批改 conf 目录下的 server.properties 文件,将批改其中的 log.dir 配置项,将其指向 kafka 源码目录下的 kafka-logs 目录:

1
log.dirs=/Users/xxx/source/kafka/kafka-logs
server.properties 文件中的其余配置临时不必批改。

最初,咱们在 IDEA 中配置 kafka.Kafka 这个入口类,启动 kafka broker,具体配置如下图所示:

启动胜利的话,控制台输入没有异样,且能看到如下输入:

P.S. 可能遇到的问题:

将 slf4j-log4j12 这个依赖的 scope 调整成 Runtime 即可,如下图所示:

发送、生产 message
咱们这里应用 kafka 自带的脚本工具来验证下面搭建的 kafka 源码环境

首先,咱们进入到 ${KAFKA_HOME}/bin 目录,通过 kafka-topics.sh 命令来创立一个名为 test_topic 的 topic:

1
./kafka-topics.sh –zookeeper localhost:2181 –create –topic test_topic –partitions 1 –replication-factor 1
执行成果如下图所示:

而后咱们通过 kafka-console-consumer.sh 命令启动一个命令行的 consumer 来生产 test_topic 这个 topic,如下:

1
./kafka-console-consumer.sh –bootstrap-server localhost:9092 –topic test_topic
执行成果如下图所示:

此时命令行会始终 hang 住,当接管到 message 的时候,会打印在命令行中。

接下来,咱们通过 kafka-console-producer.sh 命令启动一个命令行的 producer 向 test_topic 这个 topic 中生成数据,如下:

1
./kafka-console-producer.sh –bootstrap-server localhost:9092 –topic test_topic –property parse.key=true
执行成果如下图所示:

此时命令行会始终 hang 住,当咱们输出一条 message 并回车之后,message 会发送到 test_topic 这个 topic 中。

到此为止,kafka 的 broker、producer、consumer 都曾经启动好了,咱们上面就在 producer 中输出一条带 key 的 message hello YangSizheng(两头是 \t,不是空格,\t 之前的局部是 key,\t 之后的局部是 value),执行成果如下:

咱们输出完 message 并回车之后,就能够在 consumer 处收到该 message 了,成果如下图所示:

总结
本课时咱们重点介绍了 kafka 2.8.0 版本的源码环境搭建。

首先,咱们下载并装置 JDK、scala、gradle 等根底软件,并配置了它们的环境变量。
而后,咱们装置了 Zookeeper,并启动了 Zookeeper 服务。
接下来,咱们通过 git 下载了最新的 kafka 源码,并编译启动了 kafka broker
最初,咱们通过 kafka 自带的命令行 producer 和 consumer 实现了发送和生产 message,达到了验证源码环境的成果。
感激同学们的观看,课程的相干文章和视频还会放到

微信:

正文完
 0