如何在eclipse中开发flume

源码下载
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”编译成功了,见下图。

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的版本和系统路径根据实际的开发环境的环境变量而定,其他都没问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值