Idea下Kafka源码阅读编译环境搭建

Kafka源码编译阅读环境搭建

开发环境: Oracle Java 1.7.0_25 + Idea + Scala 2.10.5 +Gradle 2.1 + Kafka 0.9.0.1

一、Gradle安装配置

Kafka代码自0.8.x之后就使用Gradle来进行编译和构建了,因此首先需要安装Gradle。Gradle集成并吸收了Maven主要优点的同时还克服了Maven自身的一些局限性——你可以访问https://www.gradle.org/downloads/ 下载最新的Gradle版本。下载解压到一个目录,然后创建一个环境变量GRADLE_HOME指向解压的目录,再将%GRADLE_HOME%\bin加到PATH环境变量中,Gradle就安装配置好了。打开一个cmd输入gradle -v 验证一下:

二、Kafka源代码下载

  安装好Gradle之后我们开始下载Kafka的源代码,当前最新的稳定版本是0.10.0.1,目前我们使用的是0.9.0.1版本,你可以从http://kafka.apache.org/downloads.html处下载源代码包。下载之后解压缩到一个目录,目录结构如下图所示:

重要目录的作用如下:

bin目录:     Windows和Unix平台下的执行脚本,比如kafka-server-start,console-producer,console-consumer等
clients目录:      Kafka客户端代码
config目录:       Kafka配置文件,其中比较重要的是server.properties,启动Kafkabroker需要直接加载这个文件
contrib目录:     Kafka与hadoop集成的代码,包括hadoop-consumer和hadoop-producer
core目录:         Kafka的核心代码,也是作者后面重点要学习的部分
examples目录: Kafka样例代码,例如如何使用Java编写简单的producer和consumer
system_test:   系统测试脚本,主要用python编写
其他的目录和配置文件大多和gradle配置有关,就不赘述了。

三、下载gradle wrapper类库

  将这个配置单独作为一个步骤是因为官网的教程中并没有详细给出这方面的配置方法。如果直接从官网下载了源代码进而执行gradlew eclipse生成项目工程就会报错:

Error: Could not find or load main classorg.gradle.wrapper.GradleWrapperMain

  在Kafka源代码的gradle子目录中果然没有wrapper类库,因此我们要先安装一个Gradle Wrapper库,方法也很简单,打开个cmd窗口,在Kafka源代码根目录下执行gradle wrapper即可。你只需运行这个命令一次即可。如果是首次安装需要花一些时间去下载所需的jar包。Kafka的源代码是用Scala语言编写的,下图中清晰地显示我们使用Scala版本是2.10.4。你可以在gradle.properties文件中指定Scala版本。

命令运行成功之后,在kafka的gradle子目录中会多出一个wrapper子目录,里面包含了一个jar包和一个配置文件。至此Gradle wrapper已被成功安装在本机:

四、生成IDEA工程文件并导入到IDEA中

上述准备工作一切就绪后,我们现在可以生成IDEA工程文件。具体做法为打开一个cmd窗口,切换到kafka源代码根路径下,运行gradle idea,如果是第一次运行,可能会花费一些时间去下载必要的jar包,在等待了一段时间之后,终于看到了BUILDSUCCESSFUL的字样表示项目工程文件生成成功:

项目导入到IDEA工程中

File-->Open

IDEA中查看源码工程

五、配置server.properties

kafka broker启动时需要加载server.properties文件。该文件默认位置是在config目录下,因此需要设置运行kafka.Kafka.scala时的Program arguments为../config/server.properties以保证Kafka.scala能够找到该配置文件。

  另外,由于kafka broker会将一些元数据信息保存在zookeeper中,因此在启动kafka broker之前必须要先有一个启动着的zookeeper实例或集群,然后我们还需要在server.properties文件更新zookeeper连接信息(主机名:端口CSV列表),如下图所示:

# Zookeeper connection string (seezookeeper docs for details).

# This is a comma separated host:portpairs, each corresponding to a zk

# server. e.g."127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".

# You can also append an optional chrootstring to the urls to specify the

# root directory for all kafka znodes.

zookeeper.connect=10.11.207.97:2181

# Timeout in ms for connecting to zookeeper

zookeeper.connection.timeout.ms=6000

六、启动kafka broker

Okay! 现在可以说一切准备就绪了,可以运行kafka了,如果前面所有步骤都执行正确的话,一个kafka broker进程应该会正确地启动起来,如下图所示:

另外说一下,如果启动时没有看到任何log输出,可以将config目录下的log4j.properties文件拷贝到core\src\main\scala目录下,应该就能解决此问题。

好了,至此你就可以使用这个可运行的环境来研究Kafka源代码了。祝大家好运:)

七、log4j.properties文件路径设置

启动kafka server很奇怪, log4j.properties文件找不到,报如下错误。

log4j:WARN No appenders could be found forlogger (kafka.utils.VerifiableProperties). 
log4j:WARN Please initialize the log4j system properly.

只有把 log4j.properties放置到src/main/Scala路径下,才能找到文件,然后运行程序,正确输出日志信息。

通过如上7步后就可以正确启动kafka程序,进行相关debug,并研究其源代码了。

时间: 2024-08-02 11:02:25

Idea下Kafka源码阅读编译环境搭建的相关文章

windows下kafka源码阅读环境搭建

工具准备:jdk1.8,scala-2.11.11,gradle-3.1,zookeeper-3.4.5,kafka-0.10.0.1-src.tgz, kafka_2.11-0.10.0.1.tgz 安装jdk 安装scala 搭建zookeeper kafka源码构建 解压kafka-0.10.0.1-src.tgz,命令行进行kafka-0.10.0.1-src,执行gradle idea 注: 1)gradle idea,用国外的库构建的下载速度很慢,在进入项目里面,找到build.gr

在Mac OS X 10.10.3下使用源码包编译安装GCC5.1

1.首先去下载gcc5.1源码包:https://gcc.gnu.org/ 2.安装: ./configure(可以在这里设置安装的目录,把所有文件都存放在一个目录下,以后无论是寻找还是删除都很方便,eg: 我的位置:  ./configure –-prefix=/usr/local/gcc5.1_source) gcc5.1_source这个目录需要自己提前新建即可. make(大概花掉4个小时) make install 3.Mac自带的系统里默认把gcc进行软链接clang编译器,而不是真

在OS X 10.10.3下使用源码包编译安装gcc5.1

1.首先去下载gcc5.1源码包:https://gcc.gnu.org/ 2.安装: ./configure(可以在这里设置安装的目录,把所有文件都存放在一个目录下,以后无论是寻找还是删除都很方便,eg: 我的位置:  ./configure –-prefix=/usr/local/gcc5.1_source) gcc5.1_source这个目录需要自己提前新建即可. make(大概花掉4个小时) make install 3.Mac自带的系统里默认把gcc进行软链接clang编译器,而不是真

Spring源码分析——(001)环境搭建

1.官方参考 spring-framework的github链接:https://github.com/spring-projects/spring-framework 源码环境搭建官方参考1:考如何构建源码,Build from Source:https://github.com/spring-projects/spring-framework/wiki/Build-from-Source 源码环境搭建官方参考2:源码如何导入eclipse,import-into-eclipse:https:

数据库中间件 MyCAT 源码分析 —— 调试环境搭建

关注**微信公众号:[芋艿的后端小屋]**有福利: RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表 RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址 您对于源码的疑问每条留言都将得到认真回复.甚至不知道如何读源码也可以请教噢. 新的源码解析文章实时收到通知.每周更新一篇左右. 1. 依赖工具 2. 源码拉取 3. 数据库配置 4. MyCat 配置 5. MyCAT 启动 6. MyCAT 测试 7. 交流

MyBatis简单源码分析1 - 环境搭建

本文以MyBatis独立使用的情形简单地分析MyBatis的源码,记录自己学习的过程 重要的Java代码如下: 主程序: 1 package com.suntao.learning.debug; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.util.List; 6 7 import org.apache.ibatis.io.Resources; 8 import org.apache.ib

Linux Kafka源码环境搭建

本文主要讲述的是如何搭建Kafka的源码环境,主要针对的Linux操作系统下IntelliJ IDEA编译器,其余操作系统或者IDE可以类推. 1.安装和配置JDK确认JDK版本至少为1.7,最好是1.8及以上.使用java -version命令来查看当前JDK的版本,示例如下: [email protected]:~/workspace/software/hadoop-2.7.3/bin$ java -version java version "1.8.0_191" Java(TM)

Guava源码阅读-base-Charsets

package com.google.common.base; 今天在找base包下的源码阅读时,看到了Charsets,肯定是定义字符集的类,本来就想简单的看一下.(部分内容摘抄自:http://blog.csdn.net/sundaysunshine/article/details/53954813) 随后想到在web工程里一直会遇到编码问题,于是想总结一下编码的问题. 先看看Charsets的定义的一些常量吧. public static final Charset US_ASCII =

windows下IntelliJ IDEA搭建kafka源码环境

于kafka核心原理的资料,网上有很多,但是如果不自己研究其源码,永远是知其然而不知所以然.下面就来演示如何在windows环境下来编译kafka源码,并通过IntelliJ IDEA开发工具搭建kafka的源码环境,以方便在本地通过debug调试来研究kafka的内部实现机制. 具体步骤: (1)安装jdk,版本为1.8.0_131,配置JAVA_HOME: (2)安装scala,版本为 2.10.6,配置SCALA_HOME: (3)安装Gradle,版本为 3.1,配置GRADLE_HOM