编译Flume-NG源码之1.5.2版本

目前最新的Flume-NG版本是1.5.2,下面介绍一下编译本源码的一些经验。主要是一些问题是如何解决的。
环境说明:
操作系统:Windows7
Maven版本:3.0.4
Eclipse版本:4.3(Kepler)
一、源码下载:http://www.apache.org/dyn/closer.cgi/flume/1.5.2/apache-flume-1.5.2-src.tar.gz
二、解压至C盘根目录
三、进入c:\apache-flume-1.5.2目录,运行mvninstall -DskipTests -Dtar
网上有说要先将注释掉hbase和hadoop-test相关的依赖,我没这样做。没问题。
可能根据环境不同少有差异。不过大家遇到与hbase和hadoop-test相关的错误可以进行更正。

把那部分代码粘上来大家参考

<pre lang="html"line="1" escaped="true">

<dependency>

       <groupId>org.apache.hbase</groupId>

       <artifactId>hbase</artifactId>

       <version>${hbase.version}</version>

       <classifier>tests</classifier>

        <scope>test</scope>

</dependency>

<dependency>

        <groupId>org.apache.hadoop</groupId>

        <artifactId>hadoop-test</artifactId>

        <version>${hadoop.version}</version>

</dependency>

</pre>

 

运行该命令会从中央库上down写jar包,时间比较漫长。根据网络情况而定。期间可能会遇到以下几个问题:
1、error reading errorin opening zip file

<pre lang="html"line="1" escaped="true">

[ERROR] error: error reading

/org/elasticsearch/elasticsearch/0.90.1/elasticsearch-0.90.1.jar;

error in opening zip file

[ERROR] -> [Help 1]

</pre>

出现这个错误可能是已经下载的这个jar存在问题。到本地仓库中找到对应的jar所在位置,然后将其删除,
重新运行mvn命令可解决。
以上这个错误不一定是elasticsearch的jar找不到,其他jar也可能出现这个问题。
2、因为就是要使用这个flume-ng-morphline-solr-sink做些文章的,所以这里出问题一定是不能容忍的。必须解决,着实也困扰了一阵子。

<pre lang="html" line="1"escaped="true">

[ERROR] Failed to execute goal onproject flume-ng-morphline-solr-sink: Could no

t resolve dependencies forproject org.apache.flume.flume-ng-sinks:flume-ng-morp

hline-solr-sink:jar:1.5.2: Failedto collect dependencies for [org.apache.flume:

flume-ng-core:jar:1.5.2(compile), org.slf4j:slf4j-api:jar:1.6.1 (compile), org.

kitesdk:kite-morphlines-all:pom:0.12.0(compile?), org.slf4j:jcl-over-slf4j:jar:

1.6.1 (provided),org.apache.solr:solr-test-framework:jar:4.3.0 (test), org.kite

sdk:kite-morphlines-solr-core:jar:tests:0.12.0(test), junit:junit:jar:4.10 (tes

t)]: Failed to read artifactdescriptor for org.kitesdk:kite-morphlines-all:pom:

0.12.0: Could not transferartifact org.kitesdk:kite-morphlines-all:pom:0.12.0 f

rom/to cdh.repo(https://repository.cloudera.com/artifactory/cloudera-repos): Co

nnection tohttps://repository.cloudera.com refused: Connection timed out: conne

ct -> [Help 1]

</pre>

flume-ng-morphline-solr-sink出现问题,对应的kite-morphline没有找到依赖。这个问题困扰了我很久,提示的错误是连接cloudera的中央库超时了,看似是网络问题。
其实解决了网络问题还有另外一个重大问题就是版本对应不上。查看了一下flume-ng-morphline-solr-sink的pom.xml文件,对应查找的kite.version是0.12.0版本。但其实
cloudera的中央库上也没有这个版本了。所以解决办法是:
A、将kite.version的版本改成0.15.0.修改进入源码根目录找到pom.xml文件,找到<kite.version>0.15.0</kite.version>将0.12.0修改成0.15.0
B、找到<dependenciesManagement>标签,将下面代码插入到dependency中。

<pre lang="html" line="1"escaped="true">

<dependency>

        <groupId>org.kitesdk</groupId>

        <artifactId>kite-morphlines-all</artifactId>

        <version>${kite.version}</version>

        <exclusions>

               <exclusion>

                       <groupId>org.apache.hadoop</groupId>

                       <artifactId>hadoop-common</artifactId>

               </exclusion>

        </exclusions>

        <type>pom</type>

        <optional>true</optional>

</dependency>

</pre>

C、进入C:\apache-flume-1.5.2-src\flume-ng-sinks\flume-ng-morphline-solr-sink目录,打开pom.xml文件,将所有${kite.version}替换成0.15.0。上一步的目的是如果子
工程引用了org.kitesdk的话,则不使用这个版本。可以自定义其引用的版本。
我在实际应用中就遇到了这两个主要的问题。当然其中还有一些主要是repository连接不上的问题(公司比较烂,网络有限制)。想各种办法从网上先down下来再上传到私服解决。

最后提示下图界面,说明编译成功了。

四、然后把源码编译成eclipse工程。mvneclipse:eclipse
至此,使用eclipse导入工程即可进行开发了。

我这里还遇到了两个flume-dataset-sink的单体测试中有一个方法编译不过去的问题。因为我没用到这个sink所以也没去解决。

另一个问题是可能在install时可能会遇到

Missing artifact jdk.tools:jdk.tools:jar:1.6的问题。

解决办法:在flume-ng-morphline-solr-sink的pom.xml文件中添加一个依赖

<pre lang="html" line="1"escaped="true">

<dependency>

       <groupId>jdk.tools</groupId>

       <artifactId>jdk.tools</artifactId>

       <version>1.7</version>

       <scope>system</scope>

       <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>

    </dependency>

</pre>

至于jdk的版本和系统路径根据实际的开发环境的环境变量而定。

其他都没问题。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值