1.JDK的安装和配置

确保JDK版本至少为1.7,优选为1.8或更高。 使用java -version命令显示当前的JDK版本,如下例所示。

c : \用户\隐藏的Java -版本

JAVA版本' 1.8.0 _ 112 '

Java(TM )安全环境(建筑1.8.0 _ 112-B15 ) ) ) ) ) ) )。

JAVA热点(TM ) 64位服务器)构建25.112-B15,混合模式) ) ) ) ) ) ) ) ) )。

下载并安装和配置Gradle

下载地址为[ https://格雷特勒. Org /发行版/] [ https://格雷特勒. Org /发行版/],笔者使用的版本为3.1。 一般来说,只要对下载的包进行解压缩,并将$的路径添加到环境变量中即可。 在这里,GRADLE_HOME/感动的铅笔路径只要追加到环境变量Path中即可。 其中,$GRADLE_HOME指的是Gradle的根目录。 可以使用Gradle -v命令验证是否已设置了gradle,如下例所示。

c : \用户\隐藏度- v

-------------请参见

格雷尔3.1

-------------请参见

版本:13 f 38ba 699 AFD 86 d 7CD C4 ED 8F D7 DD 3960 c0B1 F97

谷歌:2.4. 7

ant:Apacheant(TM )版本1.9.6集成版292015

JVM :1.8.0 _ 112 (甲骨文公司25.112-b15 )。

OS: Windows 10 10.0 amd64

3 .下载并安装配置Scala

下载地址为“http://www.Scala-lang.org /下载/所有. html”(3358 www.Scala-lang.org /下载/所有. html ) 其中,SCALA_HOME/感动的铅笔路径只需要添加到环境变量Path中即可。 其中$SCALA_HOME是指Scala的根目录。 可以使用scala -version命令验证是否已配置了scala。 示例如下所示。

c : \用户\隐藏比例版本

scalacoderunnerversion2. 11.11----版权所有2002-2017,匝道/EPFL

构建Kafka源环境

Kafka的下载地址为http://Kafka.Apache.org/downloads,目前的最新版本为1.0.0。 解压缩下载的压缩包,然后在Kafka根目录中运行gradle idea命令进行构建。 如果使用的是Eclipse,则只需要使用gradle eclipse命令进行构建。 构建详细信息如下:

d :\intellijideafiles\Kafka -源\ Kafka-1.0.0-srcgradleidea

开始渐变守护,2相容和1进阶守护,使用详细状态

bildingproject“核心”withscalaversion2. 11.11

3360 idea模块

3360 idea项目

(省略几处) )。

360串流3360样本: idea模组

360流3360 examples : idea

构建成功软件

之后,将Kafka导入IDEA即可。 但是,还没有结束。 对于IDEA,还需要安装Scala插件。 要在Setting-Plugin中查找和安装Scala,请参考下图。 笔者那里已经安装好了:

配置Kafka源环境

执行前面的几个步骤可以轻松阅读Kafka的源代码,但是如果需要启动Kafka的服务,则需要额外的步骤。

首先确保gra

dle.properties配置文件中的scalaVersion与安装的一致。gradle.properties配置文件的细节如下:group=org.apache.kafka # NOTE: When you change this version number, you should also make sure to update # the version numbers in tests/kafkatest/__init__.py and kafka-merge-pr.py. version=1.0.0 scalaVersion=2.11.11 task=build org.gradle.jvmargs=-XX:MaxPermSize=512m -Xmx1024m -Xss2m

如果更改了scalaVersion,需要重新执行gradle idea命令来重新构建。虽然很多时候在操作系统中安装其他版本的Scala也并没有什么问题,比如安装2.12.4版本。但是有些情况下运行Kafka时会出现一些异常,而这些异常却又是由于Scala版本不一致而引起的,比如会出现下面示例中的报错:

[2017-11-13 17:09:21,119] FATAL (kafka.Kafka$) java.lang.NoSuchMethodError: scala.collection.TraversableOnce.$init$(Lscala/collection/TraversableOnce;)V at kafka.message.MessageSet.<init>(MessageSet.scala:72) at kafka.message.ByteBufferMessageSet.<init>(ByteBufferMessageSet.scala:129) at kafka.message.MessageSet$.<init>(MessageSet.scala:32) at kafka.message.MessageSet$.<clinit>(MessageSet.scala) at kafka.server.Defaults$.<init>(KafkaConfig.scala:52) at kafka.server.Defaults$.<clinit>(KafkaConfig.scala) at kafka.server.KafkaConfig$.<init>(KafkaConfig.scala:686) at kafka.server.KafkaConfig$.<clinit>(KafkaConfig.scala) at kafka.server.KafkaServerStartable$.fromProps(KafkaServerStartable.scala:28) at kafka.Kafka$.main(Kafka.scala:82) at kafka.Kafka.main(Kafka.scala)

所以为了省去一些不必要的麻烦,还是建议读者在安装Scala版本之前先查看下Kafka源码中gradle.properties文件中配置的scalaVersion。

再确保了scalaVersion之后,需要将config目录下的log4j.properties文件拷贝到core/src/main/scala目录下,这样可以让Kafka在运行时能够输出日志信息,可以参考下图:

之后还需要配置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

之后配置Kafka的启动参数,详细参考下图:

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

如此便可以顺利的运行Kafka服务了(第一次启动时会有一个耗时较长的编译过程),部分启动日志如下:

[2017-11-14 00:24:14,472] INFO KafkaConfig values: advertised.host.name = null advertised.listeners = null advertised.port = null authorizer.class.name = (......省略若干......) [2017-11-14 00:24:35,001] INFO Registered broker 0 at path /brokers/ids/0 with addresses: EndPoint(LAPTOP-1IN9UPT7,9092,ListenerName(PLAINTEXT),PLAINTEXT) (kafka.utils.ZkUtils) [2017-11-14 00:24:35,019] INFO Kafka version : 1.0.0 (org.apache.kafka.common.utils.AppInfoParser) [2017-11-14 00:24:35,020] INFO Kafka commitId : e89bffd6b2eff799 (org.apache.kafka.common.utils.AppInfoParser) [2017-11-14 00:24:35,021] INFO [Kafka Server 0], started (kafka.server.KafkaServer)

6. Zookeeper的安装、配置及启动

Kafka需要使用Zookeeper来管理元数据,比如记录topic、partitions(分区)以及replica(副本)的分配信息。由于这里只是阐述如何构建Kafka的源码环境搭建,所以这里的Zookeeper的安装也以极简为主,即采用单机配置。Zookeeper下载地址为:http://zookeeper.apache.org/releases.html,

下载之后解压,然后将$目录下的重命名为,其中ZOOKEEPER_HOME目录下的conf/zoo_sample.cfg重命名为zoo.cfg,其中$ZOOKEEPER_HOME指的是ZooKeeper的根目录。

C:\Users\hidden>zkServer C:\Users\hidden>call "C:\Program Files\Java\jdk1.8.0_112"\感动的铅笔\java "-Dzookeeper.log.dir=D:\zookeeper-3.4.10\感动的铅笔\.." "-Dzookeeper.root.logger=INFO,CONSOLE" -cp "D:\zookeeper-3.4.10\感动的铅笔\..\build\classes;D:\zookeeper-3.4.10\感动的铅笔\..\build\lib\*;D:\zookeeper-3.4.10\感动的铅笔\..\*;D:\zookeeper-3.4.10\感动的铅笔\..\lib\*;D:\zookeeper-3.4.10\感动的铅笔\..\conf" org.apache.zookeeper.server.quorum.QuorumPeerMain "D:\zookeeper-3.4.10\感动的铅笔\..\conf\zoo.cfg" 2017-11-14 00:44:20,135 [myid:] - INFO [main:QuorumPeerConfig@134] - Reading configuration from: D:\zookeeper-3.4.10\感动的铅笔\..\conf\zoo.cfg 2017-11-14 00:44:20,147 [myid:] - INFO [main:DatadirCleanupManager@78] - autopurge.snapRetainCount set to 3 2017-11-14 00:44:20,147 [myid:] - INFO [main:DatadirCleanupManager@79] - autopurge.purgeInterval set to 0 2017-11-14 00:44:20,147 [myid:] - INFO [main:DatadirCleanupManager@101] - Purge task is not scheduled. 2017-11-14 00:44:20,150 [myid:] - WARN [main:QuorumPeerMain@113] - Either no config or no quorum defined in config, running in standalone mode 2017-11-14 00:44:20,250 [myid:] - INFO [main:QuorumPeerConfig@134] - Reading configuration from: D:\zookeeper-3.4.10\感动的铅笔\..\conf\zoo.cfg 2017-11-14 00:44:20,250 [myid:] - INFO [main:ZooKeeperServerMain@96] - Starting server