【问题标题】:How to load custom libraries in flume first如何首先在水槽中加载自定义库
【发布时间】:2015-04-30 08:57:26
【问题描述】:

我写了一个接收器直接写入 cassandra 数据库。我还为水槽代理提供了所有必要的 cassandra 依赖项。 但是在执行时,我得到一个错误

015-04-30 00:53:25,736 (conf-file-poller-0) [ERROR - org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:149)] Unhandled error
java.lang.NoSuchMethodError: com.google.common.collect.Sets.newConcurrentHashSet()Ljava/util/Set;
    at com.datastax.driver.core.Cluster$ConnectionReaper.<init>(Cluster.java:2065)
    at com.datastax.driver.core.Cluster$Manager.<init>(Cluster.java:1163)

现在这是因为 cassandra jar 需要 guava-16.0.1.jar。我已经提供了,但我看到 Flume 选择了默认在 CDH5 中提供的 guava-11.X.X.jar。

like job.getConfiguration().set("mapreduce.job.user.classpath.first", "true");

我怎样才能告诉水槽先拿起我的罐子

【问题讨论】:

    标签: java hadoop flume flume-ng


    【解决方案1】:

    您是否已经在[APACHE_FLUME_HOME]/plugins.d/mynewsink/lib 下安装了新接收器(打包为 .jar 文件)?相关依赖应该在[APACHE_FLUME_HOME]/plugins.d/mynewsink/libext下。

    您也可以将 .jar 文件与依赖项一起打包,而不是将它们放入 libext

    【讨论】:

    • FLUME_HOME=/usr/lib/flume-ng 我已将第三方库和我的库放在 FLUME_HOME/lib 我的命令 #flume-ng agent \ --conf-file mysql-to-cassandra .properties \ --name MyAgent \ --conf $FLUME_HOME/conf \ -Dflume.root.logger=INFO,console
    • 不要将您的新接收器放入[FLUME_HOME]/lib,而是尝试按照建议将其安装在[FLUME_HOME]/plugins.d 下。相关文档:flume.apache.org/…
    • 有趣的是这并没有帮助,因为 /lib 优先于 /plugins.d ---> usr/java/jdk1.7.0_67-cloudera/bin/java -Xmx20m -Dflume.root。 logger=INFO,console -cp '/usr/lib/flume-ng/conf:/usr/lib/flume-ng/lib/*:/usr/lib/flume-ng/plugins.d/mysqltocassandra/lib/* :/usr/lib/flume-ng/plugins.d/mysqltocassandra/libext/*:/etc/hadoop/conf: ----> 但是我做了一个解决方法,我将 guava-11.X.X 的权限更改为 000 和这个对我有用。想知道它是否是水槽中的错误。但是感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 2013-06-21
    • 2011-01-03
    相关资源
    最近更新 更多