kafka源码解读(一)kafka2.x读源码环境搭建

在windows下,使用idea 阅读kafka2.x源代码 


1.前提

必读 kafka ReadMe

https://github.com/apache/kafka/blob/trunk/README.md

Apache Kafka

See our web site for details on the project.

You need to have Gradle and Java installed.

Kafka requires Gradle 5.0 or higher.

Java 8 should be used for building in order to support both Java 8 and Java 11 at runtime.

Scala 2.12 is used by default, see below for how to use a different Scala version or all of the supported Scala version

环境准备

  1. git ;
  2. Idea ;
  3. Scala 插件;
  4. Jdk 版本号:1.8以上 
  5. Gradle 版本号:5.0以上
  6. Scala sdk版本号:2.12(官方推荐)

注意事项

  1. scala插件和Idea插件保持一致,能够兼容,详见:插件安装方法 ( 三 插件版本和Idea版本保持一致)
  2. Jdk 安装后,Java -version 验证安装版本,并在Idea内进行配置;
  3. Gradle 安装后,gradle -v 验证安装版本,注意配置国内的镜像(如阿里云等),并在Idea内进行配置;
  4. Scala 安装后,scala -version验证安装版本,并在Idea内进行配置;

2. 源码下载

方式(一)

直接下载:

http://kafka.apache.org/downloads

方式(二)

github: 使用git clone命令

 地址  https://github.com/apache/kafka.git

3.编译kafka源码

在cmd窗口,切换路径到kafka源码路径,执行gradle idea命令(如果是eclipse 执行gradle eclipse);

第一次比较慢,gradle 最好已经配置国内镜像;

D:\BigDataLearning\All-src-learing\kafka-master-2.x>gradle idea
Starting a Gradle Daemon (subsequent builds will be faster)

> Configure project :
Building project 'core' with Scala version 2.12.0
Building project 'streams-scala' with Scala version 2.12.0

> Task :idea
Generated IDEA project at file:///D:/BigDataLearning/All-src-learing/kafka-master-2.x/kafka-master-2.x.ipr

Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.1.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 18s

4.启动Zookeeper

Kafka的运行依赖于Zookeeper,在运行Kafka之前我们需要安装并运行Zookeeper

(1)下载安装

下载安装文件: http://zookeeper.apache.org/releases.html,并解压文件 

(2)修改配置

在zookeeper-3.4.13\conf,把zoo_sample.cfg重命名成zoo.cfg

从文本编辑器里打开zoo.cfg,把dataDir的值改成“D:\\BigDataLearning\\All-src-learing\\kafka-master\\logs”

(3) 添加如下系统变量:

  • ZOOKEEPER_HOME: D:\BDLTools\Zookeeper\zookeeper-3.4.12(存放Zookeeper的目录)
  • Path: 在现有的值后面添加 ";%ZOOKEEPER_HOME%\bin;"

(4)运行Zookeeper: 打开cmd然后执行 zkserver,如下图示:

5.环境配置

在Idea 中导入该项目,把日志打印出来

(1)复制config/log4.properties到core/src/main/scala目录下

(2)之后还需要配置server.properties文件,一般只需要修改以下一些配置项:

# 是否允许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=localhost:2181/kafka

配置program arguments参数设置:

config/server.properties

接下来,启动main函数

(3)出现以下日常

log4j:WARN No appenders could be found for logger (kafka.utils.Log4jControllerRegistration$).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

在project structure中加入 slf4j-log4j12-1.7.7.jar和log4j-1.2.17.jar 两个日志包

(此方法,简单省事,当然也可以在build.gradle中添加对应的配置来添加包)

(4)出现以下异常

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

找到kafka.scala   Edit configurations在VM options自己配置两个参数

-Dkafka.logs.dir=D:\BigDataLearning\All-src-learing\kafka-master\logs
-Dlog4j.configuration=file:D:\BigDataLearning\All-src-learing\kafka-master\config\log4j.properties

6.启动

在cmd窗口,输入"zkServer"先启动Zookeeper,

之后,启动kafka main函数,如下图示:

参考:

搭建kafka2.0.0源码开发环境

Win10下kafka简单安装及使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值