为什么要编译源码?
- 修改各组件版本,为了跟生产上其他组件版本匹配
- bug修复
- 新特性的增加
- 二次开发
flume源码编译
编译方式:IDEA + MAVEN
编译版本:flume-ng-1.6.0-cdh5.15.1-src
编译注意事项:
-
带cdh标志的部分jar包国内不方便下载,可以借助阿里云的香港云主机下载后拷贝到本地。
-
在flume-ng-sinks下的pom.xml中找到flume-ng-morphline-solr-sink模块并注释,因为jar下不来,也不常用。
<modules> <module>flume-hdfs-sink</module> <module>flume-irc-sink</module> <module>flume-ng-hbase-sink</module> <module>flume-ng-elasticsearch-sink</module> <!--<module>flume-ng-morphline-solr-sink</module> --> <module>flume-ng-kafka-sink</module> </modules>
-
在 pom.xml 的 repositoies 中加入阿里云地址和 cdh 地址,加快 jar 包下载速度。
<repository> <id>alimaven</id> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>cdh.repo</id> <url>https://repository.cloudera.com/artifactory/cloudera-repos</url> <name>Cloudera Repositories</name> <snapshots> <enabled>false</enabled> </snapshots> </repository>
-
修改 pom.xml 的 JDK 版本,这里采用的 JDK1.8
<javaVersion>1.8</javaVersion>
-
编译并打包,全局打包需要点击带 root 的目录下的package;若只想打包子模块,到子模块下点击 package。
-
随便看一眼源码中的 README 文件,查看编译完成后jar包的目的地。
修改Taildir Source源码支持递归
flume-ng-1.6.0-cdh5.15.1-src 版本已经支持 Taildir Source 功能,但是不支持递归查找,所以需要修改这部分源码。
这里推荐一篇博客供大家参考,详细讲解了如何修改源码并实现可配置参数项,并在文章底部贴出了 Github 详细源码。