2015-10-31 20 views
0

當我運行此命令未處理的錯誤java.lang.NoSuchMethodError在運行水槽下載Twitter的數據

[email protected]:/usr/local/flume$ bin/flume-ng agent --conf ./conf/ -f conf/twitterflume-agent.conf -Dflume.root.logger=DEBUG,console -n TwitterAgent 

水槽是起步,但一段時間後,它拋出我除外,它不允許向水槽下載。我得到以下錯誤:

2015-10-31 10:18:32,152 (conf-file-poller-0) [INFO - org.apache.flume.sink.DefaultSinkFactory.create(DefaultSinkFactory.java:40)] Creating instance of sink: HDFS, type: hdfs 

2015-10-31 10:18:35,386 (conf-file-poller-0) [ERROR - org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:149)] Unhandled error 
java.lang.NoSuchMethodError: com.google.common.cache.CacheBuilder.refreshAfterWrite(JLjava/util/concurrent/TimeUnit;)Lcom/google/common/cache/CacheBuilder; 
    at org.apache.hadoop.security.Groups.<init>(Groups.java:97) 
    at org.apache.hadoop.security.Groups.<init>(Groups.java:74) 
    at org.apache.hadoop.security.Groups.getUserToGroupsMappingService(Groups.java:303) 
    at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:283) 
    at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:260) 
    at org.apache.hadoop.security.UserGroupInformation.isAuthenticationMethodEnabled(UserGroupInformation.java:337) 
    at org.apache.hadoop.security.UserGroupInformation.isSecurityEnabled(UserGroupInformation.java:331) 
    at org.apache.flume.sink.hdfs.HDFSEventSink.authenticate(HDFSEventSink.java:491) 
    at org.apache.flume.sink.hdfs.HDFSEventSink.configure(HDFSEventSink.java:240) 
    at org.apache.flume.conf.Configurables.configure(Configurables.java:41) 
    at org.apache.flume.node.AbstractConfigurationProvider.loadSinks(AbstractConfigurationProvider.java:418) 
    at org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:103) 
    at org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:140) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 

此錯誤後,它trys檢查,但它未能下載數據。

2015-10-31 10:28:05,446 (conf-file-poller-0) [DEBUG - org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:126)] Checking file:conf/twitterflume-agent.conf for changes 
[enter image description here][1] 

我是Hadoop和Flume的新手。

回答

0

看起來像編譯和運行時庫不兼容。 編譯代碼和運行代碼時存在的庫存在差異。

檢查在運行水槽代碼時是否提供正確的類路徑。 在代理正在運行的節點上,運行ps aux|grep flume以檢查類路徑。

另請注意,如果您更改了Twitter代碼並且碰到了這些庫,它將導致此問題,因爲Flume還附帶了它自己的Twitter源。在這種情況下,要麼刪除Twitter的罐子,要麼從類路徑中刪除Flume的twitter罐子。