如何编译Flume-NG源码之最新1.5.2版本

最新的Flume-NG版本是1.5.2,下面介绍一下利用下午的时间编译源码的一些经验还有一些主要问题是如何解决的。

工具/原料

  • 电脑 Windows7
  • Flume源码包 1.5.2
  • Maven版本:3.0.4
  • Eclipse版本:4.3(Kepler)

方法/步骤

  1. 源码下载

    http://www.neoye.com/3446.html apache-flume-1.5.2-src.tar.gz

  2. 解压至C盘根目录

    建议放到C盘根目录中,测试时我是放到这里,其它目录不保证可以顺利通过,可参考测试。

  3. 运行mvn

    进入c:\apache-flume-1.5.2目录,运行mvn install -DskipTests -Dtar注意:网上有其它参考材料说要先将注释掉hbase和hadoop-test相关的依赖,我没这样做,没问题。

    可能根据环境不同有差异。不过大家遇到与hbase和hadoop-test相关的错误可以进行参考更正。

  4. 部分代码参考

    <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>

  5. 典型问题1处理[重点]

    1、error reading error in opening zip file

    [ERROR] error: error reading

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

    error in opening zip file

    [ERROR] -> [Help 1]

    出现这个错误可能是已经下载的这个jar存在问题。到本地库中找到对应的jar所在位置,然后将其删除,重新运行mvn命令可解决。以上这个错误不一定是elasticsearch的jar找不到,其他jar也可能出现这个问题。

  6. 典型问题2处理[重点]

    flume-ng-morphline-solr-sink出现问题,对应的kite-morphline没有找到依赖。要使用这个flume-ng-morphline-solr-sink做些文章的,所以这里出问题必须解决。

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

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

    hline-solr-sink:jar:1.5.2: Failed to 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 artifact descriptor for org.kitesdk:kite-morphlines-all:pom:

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

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

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

    ct -> [Help 1]

    提示的错误是连接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中。

    <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>

    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下来再上传到私服解决。最后提示”Build Success”编译成功了,见下图。

    如何编译Flume-NG源码之最新1.5.2版本
  7. 编译成eclipse工程

    mvn eclipse:eclipse至此,使用eclipse导入工程即可进行开发了。

    我这里还遇到了两个flume-dataset-sink的单体测试中有一个方法编译不过去的问题。因为我没用到这个sink所以也没去解决。另一个问题是可能在install时可能会遇到Missing artifact jdk.tools:jdk.tools:jar:1.6的问题。

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

    <dependency>

           <groupId>jdk.tools</groupId>

           <artifactId>jdk.tools</artifactId>

           <version>1.7</version>

           <scope>system</scope>

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

        </dependency>

    至于jdk的版本和系统路径根据实际的开发环境的环境变量而定,其他都没问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值