设为首页 收藏本站
查看: 1092|回复: 0

[经验分享] Idea下Kafka源码阅读编译环境搭建

[复制链接]

尚未签到

发表于 2019-1-31 10:18:27 | 显示全部楼层 |阅读模式
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,并研究其源代码了。
  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-669935-1-1.html 上篇帖子: Kafka+Storm+HDFS整合实践 下篇帖子: kafka客户端API
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表