2014-05-03 8 views
7

Ich versuche, Twitter-Feeds zu hdfs zu streamen und dann Stock verwenden. Aber der erste Teil, Daten zu streamen und auf hdfs zu laden, funktioniert nicht und gibt Null Pointer Exception.Apache Flume Twitter Agent nicht Streaming-Daten

Das habe ich ausprobiert.

1. heruntergeladen Apache-Gerinne-1.4.0-bin.tar. Extrahiert es. Kopieren Sie den gesamten Inhalt zu /usr/lib/rume/. in/usr/lib/Ich wechselte den Besitzer zum Benutzer für den Kanalverzeichnis. Als ich in /usr/lib/Gerinne ls Befehl tun/, zeigt es

bin CHANGELOG conf DEVNOTES docs lib LICENSE logs NOTICE README RELEASE-NOTES tools 

2. Umzug nach conf/ Verzeichnis. Ich kopierte die Datei flume-env.sh.template als ru-me-env.sh Und ich bearbeitet die JAVA_HOME zu meinem Java-Pfad /usr/lib/jvm/java-7-oracle.

3. Als nächstes habe ich eine Datei flume.conf in demselben conf Verzeichnis genannt und hinzugefügt folgende Inhalte

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 = <Twitter Application API key> 
TwitterAgent.sources.Twitter.consumerSecret = <Twitter Application API secret> 
TwitterAgent.sources.Twitter.accessToken = <Twitter Application Access token> 
TwitterAgent.sources.Twitter.accessTokenSecret = <Twitter Application Access token secret> 
TwitterAgent.sources.Twitter.keywords = hadoop, big data, analytics, bigdata, couldera, data science, data scientist, business intelligence, mapreduce, datawarehouse, data ware housing, mahout, hbase, nosql, newsql, businessintelligence, cloudcomputing 

TwitterAgent.sinks.HDFS.channel = MemChannel 
TwitterAgent.sinks.HDFS.type = hdfs 
TwitterAgent.sinks.HDFS.hdfs.path = hdfs://localhost:8020/user/flume/tweets/%Y/%m/%d/%H/ 
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 = 600 

TwitterAgent.channels.MemChannel.type = memory 
TwitterAgent.channels.MemChannel.capacity = 10000 
TwitterAgent.channels.MemChannel.transactionCapacity = 100 

Ich habe eine App auf Twitter. Generierte Token und fügte alle Schlüssel zur obigen Datei hinzu. API Key Ich habe als Consumer Key hinzugefügt.

Ich habe das Glas von rume-sources von cloudera -files heruntergeladen, wie sie in here erwähnten.

4. I hinzugefügt, um die Gerinne-Quellen-1,0-SNAPSHOT.jar zu /user/lib/Gerinne/lib.

5. Gestartet Hadoop und getan das folgende

hadoop fs -mkdir /user/flume/tweets 
hadoop fs -chown -R flume:flume /user/flume 
hadoop fs -chmod -R 770 /user/flume 

6. ich folgendes laufen in /user/lib/Gerinne

/usr/lib/flume/conf$ bin/flume-ng agent -n TwitterAgent -c conf -f conf/flume-conf 

Es ist JARs es zeigt zeigt und dann geht es.

Wenn ich die hdfs überprüft habe, gibt es keine Dateien darin. hadoop fs -ls /user/flume/tweets und es zeigt nichts.

In hadoop, die Kern-Site.xml Datei hat folgende Konfiguration

<configuration> 
    <property> 
     <name>fs.default.name</name> 
     <value>hdfs://localhost:8020</value> 
     <fina1>true</fina1> 
    </property> 
</configuration> 

Dank

Antwort

4

ich den folgenden Befehl ausführen und es wurde gearbeitet

bin/flume-ng agent –conf ./conf/ -f conf/flume.conf -Dflume.root.logger=DEBUG,console -n TwitterAgent 
+0

Sie sind den Fehler java.lang.NoSuchMethodError nicht geteeting: twitter4j.conf.Configuration.getRequestHeaders() Ljava/util/Karte; während des Betriebs? Weil diese Methode nicht im API-Jar existiert. – Amnesiac

+0

Ich bekomme keinen Fehler. Es läuft perfekt. Ich benutze Apache Flume 1.4.0 – iUser

0

ich diesen Befehl verwendet und es funktioniert

flume-ng agent --conf /etc/flume-ng/conf/ -f /etc/flume-ng/conf/flume.conf - Dflume.root.logger=DEBUG,console -n TwitterAgent