最近在研究Kafka源代码,需要自己搭建一个开发环境。官网上给出的提示略显简单,照着做了一遍也碰到了一些问题。特此记录下来。

开发环境: Oracle Java 1.7_u71 + Eclipse 4.4.1 + Scala 2.10.4 + Gradle 2.3 + Kafka 0.8.2.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.8.2.1,你可以从http://kafka.apache.org/downloads.html处下载源代码包。下载之后解压缩到一个目录,目录结构如下图所示:

重要目录的作用如下:

bin目录:       Windows和Unix平台下的执行脚本,比如kafka-server-start,console-producer,console-consumer等
clients目录:      Kafka客户端代码
config目录:       Kafka配置文件,其中比较重要的是server.properties,启动Kafka broker需要直接加载这个文件
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 class org.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已被成功安装在本机:

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

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

一旦成功生成项目工程文件,我们就可以将kafka工程导入到Eclipse中。在Eclipse中Import->Existing Projects into Workspace的界面中可以看到有4个工程:

  core工程就是最核心的kafka工程,也是作者后面要重点研究的部分。另外貌似core工程会依赖于clients工程,因此笔者导入了core和clients两个工程。导入之后一切看似很顺利,不过后面发现Eclipse提示说core工程报错:

scalatest_2.10-1.9.1.jar of core build path is cross-compiled with an incompatible version of Scala (2.10.0). In case this report is mistaken, this check can be disabled in the compiler preference page.

  看样子是Scala compiler的版本问题,于是选中core工程,通过右键->Properties->Scala compiler进入Scala编译器设置界面,将Scala版本设置为2.10,与gradle.properties中的保持一致,顺手将target jvm的版本也调成了1.7。保存重新build之后Eclipse报错消失。

五、配置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 (see zookeeper docs for details).
# This is a comma separated host:port pairs, 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 chroot string 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源代码了。祝大家好运:)

【原创】Windows平台搭建Kafka源代码开发环境(Eclipse版本)的更多相关文章

  1. Windows下搭建objective C开发环境

    摘自:http://blog.csdn.net/zhanghefu/article/details/18320827 最近打算针对iPhone.iPod touch和iPad开发一些应用,所以,需要开 ...

  2. Windows下搭建Spark+Hadoop开发环境

    Windows下搭建Spark+Hadoop开发环境需要一些工具支持. 只需要确保您的电脑已装好Java环境,那么就可以开始了. 一. 准备工作 1. 下载Hadoop2.7.1版本(写Spark和H ...

  3. 用Windows+VirtualBox搭建嵌入式Linux开发环境

    Windows+VirtualBox的嵌入式Linux开发环境的搭建 最近一直在学习Linux的设备驱动编写,一直是在物理机上安装的Ubuntu进行的,但是在Ubuntu12.04的系统中,已经不能用 ...

  4. WINDOWS 下搭建 OC 集成开发环境

    Objective-C是苹果软件的编程语言,想要上机学习.调试,有一个集成开发环境(IDE)方便很多.有三类方法搭建Objective-C的集成开发环境: 1)   使用苹果的平台,集成开发环境使用X ...

  5. kakfa源代码开发环境搭建过程中的错误处理

    在window上搭建kafka的源代码开发环境,主要参考如下的blog: http://www.bubuko.com/infodetail-695974.html    << Window ...

  6. 【转】windows和linux中搭建python集成开发环境IDE

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  7. Windows在结构objective C开发环境

    对于近期打算iPhone.iPod touch和iPad开发一些应用程序,所以.需要开始学习Objective C(苹果推出的类似C语言的开发语言).因为苹果的自我封闭的产业链发展模式(从芯片.机器. ...

  8. windows和linux中搭建python集成开发环境IDE——如何设置多个python环境

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  9. windows+CMake+mingw 搭建c c++开发环境

    layout: post title: "windows+CMake+mingw 搭建c c++开发环境" date: 2018-03-30 22:23:06 tags: wind ...

随机推荐

  1. byte[] 转成图片方法

    /// <summary> /// ImageData 的摘要说明 /// </summary> public class ImageData : IHttpHandler { ...

  2. hihocoder -1121-二分图的判定

    hihocoder -1121-二分图的判定 1121 : 二分图一•二分图判定 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 大家好,我是小Hi和小Ho的小伙伴Net ...

  3. 《Pro Express.js》学习笔记——app.params中间件

    app.param中间件用于对URL中的参数进行获取.加工.输出,提供公有逻辑,以达到代码重构的目的. 以下示例采取三个步骤对代码进行重构,app.param中间件的作用非常明显: 不使用中间件 使用 ...

  4. 浅谈c语言的指针

    对于非计算机专业的同学,c语言的指针往往就是老师的一句“指针不考“就带过了.c语言的指针号称是c语言的灵魂,是c语言中最精妙的部分. 指针本质上也是变量,也就是一段内存,只是他的特殊之处是他存储的数据 ...

  5. IOS 计时器暂停和开始 防止重复点击

    -(IBAction)btnClick{ [self starTimer];//开始计时 //[self stopTimer]; } -(NSTimer*)timer{ if (!_timer) { ...

  6. Python基础5:列表 元祖 字典 集合

    [ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)——即:可以改变列表的内容. 相关操作: ...

  7. jQuery上定义插件并重设插件构造函数

    插件alert的全部代码,每个插件都定义在如下类似的作用域中: +function ($) { 'use strict'; // ALERT CLASS DEFINITION // ========= ...

  8. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  9. DBAPI部署

    1.添加源 sudo rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm ...

  10. 单选按钮控件(Ridio Button)的使用

    VC学习笔记5:单选按钮控件(Ridio Button)的使用 一.对单选按钮进行分组: 每组的第一个单选按钮设置属性:Group,Tabstop,Auto;其余按钮设置属性Tabstop,Auto. ...