我有 2 个 CDH4 集群。一个带有 CentOS 6.4(真实硬件)另一个 Ubuntu 12.04(Amazon EC2)。
所有配置文件都是手动制作的(使用 Cloudera 管理器)。我尝试启动Cloudera-twitter-example。当我在 CentOS 集群上启动 flume 时,它可以正常工作。但是在 Ubuntu 集群上 Flume 在日志文件中给出了这样的错误:
2013-09-11 15:04:54,491 INFO org.apache.flume.instrumentation.MonitoredCounterGroup: Component type: SINK, name: HDFS started
2013-09-11 15:04:54,527 ERROR org.apache.flume.lifecycle.LifecycleSupervisor: Unable to start EventDrivenSourceRunner: { source:com.cloudera.flume.source.TwitterSource
{name:Twitter,state:IDLE} } - Exception follows.
java.lang.NoSuchMethodError: twitter4j.FilterQuery.setIncludeEntities(Z)Ltwitter4j/FilterQuery;
经过一番谷歌搜索后,我在 Suresh E Gopalan的评论中找到了这个解决方案2013 年 8 月 20 日凌晨 2:43
于是我们又多了一个JAR文件search-contrib-0.9.1-cdh4.3.0-SNAPSHOT-jar-with-dependencies.jar,同一个类,和FLUME_CLASSPATH中正确的有冲突,暂时重命名为.org扩展名,这样就可以了在启动时从类路径中排除
重命名这个 jar 后,Flume 开始在 Ubuntu 集群上工作。在 CentOS 集群上,我有相同的 jar 和相同的类,但它不需要重命名。
为什么会发生,我应该在 Ubuntu 集群中做些什么更改才能在不重命名的情况下具有相同的行为?