(一)kafka源码阅读环境搭建

1:kafka源码阅读环境搭建

1:提前安装scala,JDK,gradle
查看是否安装,安装的版本尽量和源码中要求的版本保持一致,详见README.md和gradle.properties文件中说明

gradle -v
java -v
scala -v

在这里插入图片描述
gradle下载地址:https://gradle.org/releases/ 下载解压配置环境变量即可。
scala下载地址:https://www.scala-lang.org/download/2.11.12.html,下载.msi安装一直next完成即可,不用配环境变量。
2:idea配置scala(安装scala插件)
3:idea配置已经安装的gradle
在这里插入图片描述
4:kafka源码配置步骤如下。

  • 1:kafka源码下载:http://archive.apache.org/dist/kafka/ 选择带src.tar.gz的包,本次选择版本1.1.1-src.tar.gz
  • 2:解压包
  • 3:在cmd中切换到解压路径下,执行gradle idea 可以看到最后成功,一般根据网速5分钟左右。
    在这里插入图片描述
  • 4:打开idea导入源码
  • 5:修改源码中的配置文件
    修改gradle.properties配置文件中的scalaVersion与安装的一致。如果更改了scalaVersion,需要重新执行gradle idea命令来重新构建
  • 6:将config目录下的log4j.properties文件拷贝到core/src/main/scala目录下,这样可以让Kafka在运行时能够输出日志信息
    在这里插入图片描述
  • 7:配置config/server.properties文件
    配置影响kafka运行的相关参数,windows运行源码需要配置log日志输出位置为windows文件地址
    zookeeper.connect必须配zk的连接地址,可以是虚拟机等等,不配置无法启动汇报finished with non-zero exit value 1或者空指针等异常导致启动失败
# 是否允许topic被删除,设置为true则topic可以被删除,
# 开启这个功能方便Kafka在运行一段时间之后,能够删除一些不需要的临时topic
delete.topic.enable=true
# 禁用自动创建topic的功能
auto.create.topics.enable=false
# 存储log文件的目录,默认值为/tmp/kafka-logs
# 示例是在Windows环境下运行,所以需要修改这个配置,注意这里的双反斜杠。
log.dir=D:\\kafka\\tmp\\kafka-logs
# 配置kafka依赖的zookeeper路径地址,这里的前提是在本地开启了一个zookeeper的服务
# 如果本地没有zookeeper服务,可以参考下一节中zookeeper的安装、配置及运行
zookeeper.connect=192.168.2.101:2181/kafka

我的配置的是本地虚拟机安装的zk,也可在windows安装利用cmd命令终端启动。(/kafka指定的是kafka元数据在zk的存储路径,不配置无法生成cluster.id会报空指针异常)

  • 8:配置kafka启动运行参数
    在这里插入图片描述

这里配置Main class为kafka.Kafka,并制定启动时所需要的配置文件地址,即:config/server.properties。配置JMX_PORT是为了方便搜集Kafka自身的Metrics监控数据

  • 9:在core/src/main下创建resources目录,并把config/log4j.properties文件复制到已经创建的resources/下(为了打印运行日志,放在resources下会自动加载)。修改log4j.properties,不然控制没有日志输出,不输出时再修改,如果正常输出可不改。
log4j.rootLogger=INFO, stdout, kafkaAppender
修改为log4j.rootLogger=DEBUG, stdout, kafkaAppender

  • 10:运行(第一次启动时会有一个耗时较长的编译过程)。我的运行时报kafka.kafka类没有发现。解决措施:删除第8步设置的配置,先运行kafka.main根据生成的配置edit configuration中在执行传参program arguments中增加config/server.properties即可运行。
    在这里插入图片描述

成功启动,源码阅读进行中…

1:源码搭建问题汇总

1:关于在gradle.builder中的报错一般是由于idea未配置gradle导致的,配置完下载相关依赖即可正常
2:kafka.kafka主类运行时不输出日志,报SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“. 在build.gradle中找到project(‘:core’) { 模块的配置项,修改dependencies 中的compile改为implementation,并注释 compile(libs.zookeeper) { 中的
/* exclude module: ‘slf4j-log4j12’ exclude module: ‘log4j’*/

  dependencies {
    implementation project(':clients')
    implementation libs.jacksonDatabind
    implementation libs.joptSimple
    implementation libs.metrics
    implementation libs.scalaLibrary
    // only needed transitively, but set it explicitly to ensure it has the same version as scala-library
    implementation libs.scalaReflect
    implementation libs.scalaLogging
    implementation libs.slf4jApi
    implementation(libs.zkclient) {
      exclude module: 'zookeeper'
    }
    compile(libs.zookeeper) {
/*      exclude module: 'slf4j-log4j12'
      exclude module: 'log4j'*/
      exclude module: 'netty'
    }

3:运行kafka报错:

USAGE: java [options] KafkaServer server.properties [--override property=value]*
Option

kafka启动必须知道server.properties配置文件路径。配置参加上面第10步。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值