2 つの CDH4 クラスターがあります。1 つは CentOS 6.4 (リアル ハードウェア)、もう 1 つは 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 クラスターで何を変更する必要がありますか?