【原创】Windows平台搭建Kafka源代码开发环境(Eclipse版本)
最近在研究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版本)的更多相关文章
- 「C语言」在Windows平台搭建C语言开发环境的多种方式
新接触C语言,如何在Windows下进行C语言开发环境的搭建值得思考并整理. 以下多种开发方式择一即可(DEV C++无须环境准备). 注:本文知识来源于 Windows 平台搭建C语言集成开发环境 ...
- 在Windows平台搭建C语言开发环境
一.在Windows平台搭建DEV C++集成开发环境 官网 https://sourceforge.net/projects/orwelldevcpp/ 中下载Dev C++运行即可 环境准 ...
- Windows下搭建objective C开发环境
摘自:http://blog.csdn.net/zhanghefu/article/details/18320827 最近打算针对iPhone.iPod touch和iPad开发一些应用,所以,需要开 ...
- Windows下搭建Spark+Hadoop开发环境
Windows下搭建Spark+Hadoop开发环境需要一些工具支持. 只需要确保您的电脑已装好Java环境,那么就可以开始了. 一. 准备工作 1. 下载Hadoop2.7.1版本(写Spark和H ...
- windows下搭建nginx+php开发环境
windows下搭建nginx+php开发环境 1.前言 windows下大多我们都是下载使用集成环境,但是本地已经存在一个集成环境,但不适合项目的需求.因此准备再自己搭建一个环境. 2.准备 工具: ...
- 用Windows+VirtualBox搭建嵌入式Linux开发环境
Windows+VirtualBox的嵌入式Linux开发环境的搭建 最近一直在学习Linux的设备驱动编写,一直是在物理机上安装的Ubuntu进行的,但是在Ubuntu12.04的系统中,已经不能用 ...
- Windows下搭建Android NDK开发环境及命令行编译
首先说明本文内的相关安装操作参考<Pro Android C++ with the NDK>一书. 安装 Windows搭建Android NDK开发环境需要安装如下部分(同时需要配置对应 ...
- 【RN - 基础】之Windows下搭建React Native开发环境
前言 React Native由Facebook公司于2015年F8大会上开源,其主张“Learn once, write everywhere”.React Native的核心设计理念是:既拥有Na ...
- WINDOWS 下搭建 OC 集成开发环境
Objective-C是苹果软件的编程语言,想要上机学习.调试,有一个集成开发环境(IDE)方便很多.有三类方法搭建Objective-C的集成开发环境: 1) 使用苹果的平台,集成开发环境使用X ...
随机推荐
- 《BI深入浅出》笔记
今年的项目涉及到BI的知识点,读了<商业智能深入浅出>,这本书是基于IBM的产品做的,基础知识部分讲的非常成体系.记下来做个备忘: 1. BI简介 1.1 实施方案 1)项目规划: 2)系 ...
- Github注册过程以及对管理软件的了解
二.目前流行的源程序管理软件和项目管理软件主要有以下一些: 1.Visual Source Safe 优点:如果开发工具是VS.NET,用VSS较合适,方便,安装配置和使用都简单,版本控制简单,打la ...
- [ACM_几何] F. 3D Triangles (三维三角行相交)
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28235#problem/A 题目大意:给出三维空间两个三角形三个顶点,判断二者是否有公共 ...
- Perl重命名当前目录下的文件
下载的zip包解压后,中文都变成了乱码,就写了个脚本重命名文件. use strict; use warnings; use Cwd; sub main { my $dir = getcwd(); o ...
- Java-继承,多态练习0922-02
创建如下三个类:(People类中的三个方法分别输出一些信息,ChinaPeople 和AmericanPeople类重写父类的三个方法). 父类: package com.lianxi1; publ ...
- 阿里云配置mysql navcat远程连接
默认是不能用客户端远程连接的,阿里云提供的help.docx里面做了设置说明,mysql密码默认存放在/alidata/account.log 首先登录: mysql -u root -h local ...
- jQuery LigerUI 最新版压缩包(含chm帮助文档、源码、donet权限示例)
jQuery LigerUI 最新版压缩包 http://download.csdn.net/download/heyin12345/4680593 jQuery LigerUI 最新版压缩包(含ch ...
- KnockoutJS 3.X API 第五章 高级应用(3) 虚拟元素绑定
注意:这是一种高级技术,通常仅在创建可重用绑定的库时使用. 这不是你通常需要做的时候使用Knockout构建应用程序. Knockout的控制流绑定(例如,if和foreach)不仅可以应用于常规DO ...
- 最简单的SVN环境搭建过程
本文简单描述最简单的SVN环境搭建过程 搭建环境:windows (个人验证了windows2003,windows xp) 使用软件:Setup-Subversion-1.6.17 //Serve ...
- java中paint方法和paintComponent方法的不同
/* 1.由Component.java源代码中可以看见其中的paint()方法体是空的,在Container中重写了该方法,其子类Window等也重写了该方法 2.由JComponent.java源 ...