Далее следует исключение. org.apache.flume.FlumeException: невозможно загрузить тип источника в анализе твиттера Flume

Я пытаюсь провести анализ твиттера с помощью Flume и Hive. Для получения твитов из твиттера я установил все необходимые параметры (consumerKey, ConsumerSecret, accessToken и accessTokenSecret) в файлах flume.conf.

TwitterAgent.sources = Twitter TwitterAgent.channels = MemChannel
TwitterAgent.sinks = HDFS   TwitterAgent.sources.Twitter.type =
com.cloudera.flume.source.TwitterSource
TwitterAgent.sources.Twitter.channels = MemChannel
TwitterAgent.sources.Twitter.consumerKey = <consumerKey>
TwitterAgent.sources.Twitter.consumerSecret = <consumerSecret>
TwitterAgent.sources.Twitter.accessToken = <accessToken>
TwitterAgent.sources.Twitter.accessTokenSecret = <accessTokenSecret 
TwitterAgent.sources.Twitter.keywords = hadoop, big data, analytics,
bigdata, cloudera, data science, data scientiest, business
intelligence, mapreduce, data warehouse, data warehousing, mahout,
hbase, nosql, newsql, businessintelligence, cloudcomputing  
TwitterAgent.sinks.HDFS.channel = MemChannel
TwitterAgent.sinks.HDFS.type = hdfs TwitterAgent.sinks.HDFS.hdfs.path
= hdfs://localhost:9000/user/flume/tweets/ TwitterAgent.sinks.HDFS.hdfs.fileType = DataStream
TwitterAgent.sinks.HDFS.hdfs.writeFormat = Text
TwitterAgent.sinks.HDFS.hdfs.batchSize = 1000
TwitterAgent.sinks.HDFS.hdfs.rollSize = 0
TwitterAgent.sinks.HDFS.hdfs.rollCount = 10000  
TwitterAgent.channels.MemChannel.type = memory
TwitterAgent.channels.MemChannel.capacity = 10000
TwitterAgent.channels.MemChannel.transactionCapacity = 100

Я установил путь к классу для tar-шара Flume и файла jar исходного снимка Flume, используя bash rc .

export FLUME_HOME=/home/students/apache-flume-1.4.0-bin 
export FLUME_SRC=/home/students/flume-sources-1.0-SNAPSHOT.jar 
export PATH=$FLUME_HOME/bin:$FLUME_SRC/bin:$PATH

Когда я запускаю Flume Agent

flume-ng agent --conf-file twitter_flume.conf --name TwitterAgent -Dflume.root.logger=INFO,console -n TwitterAgent

я вижу приведенную ниже трассировку журнала, и ничего не происходит

15/06/23 23:41:55 INFO source.DefaultSourceFactory: Creating instance
of source Twitter, type com.cloudera.flume.source.TwitterSource
15/06/23 23:41:55 ERROR
node.PollingPropertiesFileConfigurationProvider: Failed to load
configuration data. Exception follows.
org.apache.flume.FlumeException: Unable to load source type:
com.cloudera.flume.source.TwitterSource, class:
com.cloudera.flume.source.TwitterSource     at
org.apache.flume.source.DefaultSourceFactory.getClass(DefaultSourceFactory.java:67)
    at
org.apache.flume.source.DefaultSourceFactory.create(DefaultSourceFactory.java:40)
    at
org.apache.flume.node.AbstractConfigurationProvider.loadSources(AbstractConfigurationProvider.java:327)
    at
org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:102)
    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:744) Caused by:
java.lang.ClassNotFoundException:
com.cloudera.flume.source.TwitterSource     at
java.net.URLClassLoader$1.run(URLClassLoader.java:366)  at
java.net.URLClassLoader$1.run(URLClassLoader.java:355)  at
java.security.AccessController.doPrivileged(Native Method)  at
java.net.URLClassLoader.findClass(URLClassLoader.java:354)  at
java.lang.ClassLoader.loadClass(ClassLoader.java:425)   at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)   at
java.lang.ClassLoader.loadClass(ClassLoader.java:358)   at
java.lang.Class.forName0(Native Method)     at
java.lang.Class.forName(Class.java:190)     at
org.apache.flume.source.DefaultSourceFactory.getClass(DefaultSourceFactory.java:65)
    ... 11 more

Могу ли я узнать, почему эта ошибка выдается, когда я уже установил исходный файл .jar. Пожалуйста, помогите мне в этом.


person Community    schedule 24.06.2015    source источник
comment
stackoverflow.com/questions/31297530 /   -  person Harshita Taparia    schedule 10.07.2015


Ответы (4)


Вы установили не путь к классам, а PATH (который используется для поиска исполняемых двоичных файлов, а не файлов Java .jar).

Вы можете установить переменную FLUME_CLASSPATH в файле flume-env.sh в вашем каталоге Flume conf; или добавив параметр -classpath <path/to/the/jar> в командную строку.

person frb    schedule 25.06.2015

Пожалуйста, найдите настройки Flume Twitter на Cloudera:

1. Вот файл /usr/lib/flume-ng/conf/flume.conf:

TwitterAgent.sources = Twitter
TwitterAgent.channels = MemChannel
TwitterAgent.sinks = HDFS
TwitterAgent.sources.Twitter.type= com.cloudera.flume.source.TwitterSource
TwitterAgent.sources.Twitter.channels = MemChannel

TwitterAgent.sources.Twitter.consumerKey = xxxxxxxxxxxxxxxxxxxxx
TwitterAgent.sources.Twitter.consumerSecret = xxxxxxxxxxxxxxxxxxxxxx
TwitterAgent.sources.Twitter.accessToken = xxxxxxxxxxxxxxx
TwitterAgent.sources.Twitter.accessTokenSecret = xxxxxxxxxxxxxxxxxx

TwitterAgent.sources.Twitter.keywords = Hadoop,BigData  
TwitterAgent.sinks.HDFS.channel = MemChannel 
TwitterAgent.sinks.HDFS.type = hdfs
TwitterAgent.sinks.HDFS.hdfs.path = hdfs://quickstart.cloudera:8020/user/cloudera/flume/tweets/
TwitterAgent.sinks.HDFS.hdfs.fileType = DataStream
TwitterAgent.sinks.HDFS.hdfs.writeFormat = Text
TwitterAgent.sinks.HDFS.hdfs.batchSize = 1000
TwitterAgent.sinks.HDFS.hdfs.rollSize = 0 
TwitterAgent.sinks.HDFS.hdfs.rollCount = 10000
TwitterAgent.channels.MemChannel.type = memory
TwitterAgent.channels.MemChannel.capacity = 10000
TwitterAgent.channels.MemChannel.transactionCapacity = 100

2. Переименуйте приведенный ниже файл flume-env.sh.template в flume-env.sh.

~]$ sudo cp /usr/lib/flume-ng/conf/flume-env.sh.template /usr/lib/flume-ng/conf/flume-env.sh

3. Задайте JAVA_HOME и FLUME_CLASSPATH в файле flume-env.sh как:

экспорт JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera

FLUME_CLASSPATH=/usr/lib/flume-ng/lib/flume-sources-1.0-SNAPSHOT.jar

4. Если вы не нашли /usr/lib/flume-ng/lib/flume-sources-1.0-SNAPSHOT.jar в своей системе, загрузите apache-flume-1.6.0-bin из Google и скопируйте папку lib в текущую папку lib.

Убедитесь, что файл flume-sources-1.0-SNAPSHOT.jar доступен в папке lib.

4.1. Переименовать старую папку lib

4.2. Загрузите и установите Cloudera Desktop и выполните следующие действия:

~]$ sudo mv /usr/lib/flume-ng/lib /usr/lib/flume-ng/lib_cloudera

~]$ sudo mv /home/cloudera/Desktop/apache-flume-1.6.0-bin/lib /usr/lib/flume-ng/lib

5. Теперь запустите команду агента Flume:

~]$ агент flume-ng --conf-file /usr/lib/flume-ng/conf/flume.conf --name TwitterAgent -Dflume.root.logger=INFO,console -n TwitterAgent

Это должно работать успешно. Всего наилучшего.

person Santosh Singh    schedule 25.02.2018

Я думаю, что com.cloudera.flume.source.TwitterSource больше не работает. Попробуйте с org.apache.flume.source.twitter.TwitterSource

person epic_last_song    schedule 27.12.2016

Извините, это на самом деле работает, но убедитесь, что у вас есть все jar-файлы в вашем файле flume/lib. Выполните все шаги в: http://bigdatanalysis.blogspot.com.es/2014/02/collecting-tweets-in-hadoop-using-flume.html

person epic_last_song    schedule 27.12.2016