Flume - 重新编译源码

本文详细介绍了如何从源码编译Flume 1.7.0的快照版本,包括解决因网络问题导致的编译失败,通过添加开源中国的maven库地址来避免下载问题,以及编译过程中的注意事项,如针对Hadoop 2.X的特定打包命令。最终成功编译后的Flume可以导入Eclipse进行源码阅读和修改。

Flume是一个分布式日志收集系统系统,具体的后面的文章会详细介绍。因为在使用Flame的过程中自定义了一些功能,所以需求重新打包,本篇只讲述如果编译,打包,导入eclipse阅读源码。

编译过程中遇到些问题,网上找了好多资料,都无法解决。记录下来,希望能对需要的人有所帮助。

1,通过git下载源码,最新版本是1.7.0,我编译的是1.7.0的快照版本
地址:https://github.com/apache/flume.git
这里写图片描述
2,mvn clean eclipse:clean
3,mvn install eclipse:eclipse -Dmaven.test.skip=true -Dtar
有以下报错,原因都是无法连接到maven.twttr.com,可能是被墙了。导致无法下载jar和pom文件
这里写图片描述

[ERROR] Failed to execute goal on project flume-ng-morphline-solr-sink: Could not resolve dependencies for project org.apache.flume.flume-ng-sinks:flume-ng-morphline-solr-sink:jar:1.7.0-SNAPSHOT: Failed to collect dependencies at
org.kitesdk:kite-morphlines-all:pom:1.0.0 -> org.kitesdk:kite-morphlines-useragent:jar:1.0.0 -> ua_parser:ua-parser:jar:1.3.0: Failed to read artifact descriptor for ua_parser:ua-parser:jar:1.3.0: Could not transfer artifact ua_pa
rser:ua-parser:pom:1.3.0 from/to maven-twttr (http://maven.twttr.com): Connect to maven.twttr.com:80 [maven.twttr.com/46.82.174.68] failed: Connection timed out: connect -> [Help 1]

我没有试过翻墙能不能链接到maven.twttr.com。
解决办法是在根pom文件的标签添加下面的maven库地址。

<repository>
      <id>maven.tempo-db.com</id>
      <url>http://maven.oschina.net/service/local/repositories/sonatype-public-grid/content/</url>
</repository>

maven.oschina.net是开源中国 “中国源” 项目的一个子系统,在不断进行完善当中,很靠谱国内maven库。有了它,妈妈再也不用担心你下不了依赖包了。嘿嘿!!!

很多开源项目的jar和POM在http://search.maven.org无法找到,大家可以试试在http://maven.oschina.net

OK,继续编译,又出现如下错误:
这里写图片描述
注释:flume-ng-channels\flume-kafka-channel\的

<!--
   <dependency>
     <groupId>org.apache.flume.flume-ng-sinks</groupId>
     <artifactId>flume-ng-kafka-sink</artifactId>
     <version>${project.version}</version>
     <classifier>tests</classifier>
     <scope>test</scope>
   </dependency>
-->

注释:\flume-ng-sinks\flume-ng-hbase-sink\

<!--            
        <dependency>
          <groupId>org.apache.hbase</groupId>
          <artifactId>hbase</artifactId>
          <optional>true</optional>
        </dependency>

        <dependency>
          <groupId>org.apache.hbase</groupId>
          <artifactId>hbase</artifactId>
          <classifier>tests</classifier>
          <scope>test</scope>
        </dependency>
-->

Continue!
这里写图片描述
编译成功,导入到eclipse。尽情的阅读和修改源码吧。^-^

最后需要注意flume的flume-hdfs-sink分两块:

<id>hadoop-1.0</id><id>hadoop-2</id>

如果用的是hadoop2.X的,打包的时候需要指定,命令: mvn install eclipse:eclipse -Dmaven.test.skip=true -Phadoop-2 -Dtar

生成:
apache-flume-1.7.0-SNAPSHOT-bin.tar.gz和apache-flume-1.7.0-SNAPSHOT-src.tar.gz

关于flume后续将会持续更新。。。

要下载 Flume JDBC Source 的特定版本 JAR 文件(如 1.0.3 版本),可以参考以下方法: ### 使用 Maven 仓库 如果 `flume-jdbc-source` 是一个开源项目,并且发布到了 Maven Central 或其他公共仓库,可以通过以下方式获取其 JAR 包: 1. 访问 [Maven Central](https://search.maven.org/)。 2. 搜索 `flume-jdbc-source` 并选择版本 `1.0.3`。 3. 点击下载对应的 `.jar` 文件。 如果你使用的是 Maven 项目,可以直接在 `pom.xml` 中添加如下依赖: ```xml <dependency> <groupId>com.github.jflume</groupId> <artifactId>flume-jdbc-source</artifactId> <version>1.0.3</version> </dependency> ``` ### 手动下载存档文件 如果没有通过 Maven 获取 JAR 包的条件,可以尝试手动下载: 1. 前往项目的 GitHub 页面或官方发布的下载地址。 2. 查找与 `1.0.3` 对应的发布版本,并下载包含 JAR 文件的完整包。 例如,某些项目可能会将构建好的 JAR 文件打包在发行版中,可以通过访问项目的 **Releases** 页面找到对应版本并下载。 ### 自行编译生成 JAR 如果无法直接下载到 `flume-jdbc-source-1.0.3.jar`,可以尝试从源码编译: 1. 克隆项目仓库到本地: ``` git clone https://github.com/jflume/flume-jdbc-source.git ``` 2. 切换到指定版本分支: ``` git checkout v1.0.3 ``` 3. 使用 Maven 编译并打包 JAR 文件: ``` mvn clean package ``` 4. 在 `target/` 目录下即可找到生成的 `flume-jdbc-source-1.0.3.jar`。 ### 注意事项 - 如果遇到网络问题或权限限制,请确保配置了正确的代理或访问权限。 - 可以检查 HDFS 或内部仓库是否已经存在该 JAR 文件,避免重复下载[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值