Агент твиттера apache flume не передает данные

Я пытаюсь передать потоки Twitter в hdfs, а затем использовать hive. Но первая часть, потоковая передача данных и загрузка в hdfs, не работает и дает исключение нулевого указателя.

Это то, что я пробовал.

1. Скачал apache-flume-1.4.0-bin.tar. Извлек его. Все содержимое скопировано в / usr / lib / flume /. в / usr / lib / я сменил владельца на пользователя для каталога flume. Когда я выполняю команду ls в / usr / lib / flume /, отображается

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

2. Перемещен в каталог conf /. Я скопировал файл flume-env.sh.template как flume-env.sh и отредактировал JAVA_HOME на свой путь java /usr/lib/jvm/java-7-oracle.

3. Затем я создал файл с именем flume.conf в том же каталоге 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 = <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

Создал приложение в твиттере. Сгенерирован токен и добавлены все ключи в указанный выше файл. Ключ API, который я добавил в качестве ключа потребителя.

Я загрузил jar-файл flume-sources из cloudera -files, как они упоминали здесь.

4. Я добавил flume-sources-1.0-SNAPSHOT.jar в / user / lib / flume / lib.

5. Запустил Hadoop и сделал следующее.

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

6. Я запускаю следующее в / user / lib / flume

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

Он показывает JAR-файлы, которые он показывает, а затем закрывается.

Когда я проверил hdfs, файлов в нем нет. hadoop fs -ls /user/flume/tweets и ничего не показывает.

В hasoop файл core-site.xml имеет следующую конфигурацию

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

Спасибо


person iUser    schedule 03.05.2014    source источник


Ответы (2)


Я запускаю следующую команду, и она сработала

bin/flume-ng agent –conf ./conf/ -f conf/flume.conf -Dflume.root.logger=DEBUG,console -n TwitterAgent
person iUser    schedule 03.05.2014
comment
Вы не получаете ошибку java.lang.NoSuchMethodError: twitter4j.conf.Configuration.getRequestHeaders () Ljava / util / Map; во время бега? Потому что этого метода нет в jar API. - person Amnesiac; 12.06.2014
comment
Я не получаю никаких сообщений об ошибках. Работает отлично. Я использую apache flume 1.4.0 - person iUser; 24.06.2014

Я использовал эту команду, и она работает

flume-ng agent --conf /etc/flume-ng/conf/ -f /etc/flume-ng/conf/flume.conf - Dflume.root.logger=DEBUG,console -n TwitterAgent
person Rajendra Jangir    schedule 06.05.2015