Flume не записывает журналы в Hdfs

Итак, я настроил flume для записи журналов доступа apache2 в hdfs ... и, как я понял из журналов flume, все настройки верны, но я не знаю, почему он все еще не пишет в hdfs. Итак, вот мой файл конфигурации Flume

#agent and component of agent
search.sources = so
search.sinks = si
search.channels = sc

# Configure a channel that buffers events in memory:
search.channels.sc.type = memory
search.channels.sc.capacity = 20000
search.channels.sc.transactionCapacity = 100


# Configure the source:
search.sources.so.channels = sc
search.sources.so.type = exec
search.sources.so.command = tail -F /var/log/apache2/access.log

# Describe the sink:
search.sinks.si.channel = sc
search.sinks.si.type = hdfs
search.sinks.si.hdfs.path = hdfs://localhost:9000/flumelogs/
search.sinks.si.hdfs.writeFormat = Text
search.sinks.si.hdfs.fileType = DataStream
search.sinks.si.hdfs.rollSize=0
search.sinks.si.hdfs.rollCount = 10000
search.sinks.si.hdfs.batchSize=1000
search.sinks.si.rollInterval=1

а вот и мои логи

14/12/18 17:47:56 INFO node.AbstractConfigurationProvider: Creating channels
14/12/18 17:47:56 INFO channel.DefaultChannelFactory: Creating instance of channel sc   type memory
14/12/18 17:47:56 INFO node.AbstractConfigurationProvider: Created channel sc
14/12/18 17:47:56 INFO source.DefaultSourceFactory: Creating instance of source so, type exec
14/12/18 17:47:56 INFO sink.DefaultSinkFactory: Creating instance of sink: si, type: hdfs
14/12/18 17:47:56 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
14/12/18 17:47:56 INFO hdfs.HDFSEventSink: Hadoop Security enabled: false
14/12/18 17:47:56 INFO node.AbstractConfigurationProvider: Channel sc connected to [so, si]
14/12/18 17:47:56 INFO node.Application: Starting new configuration:{ sourceRunners:{so=EventDrivenSourceRunner: { source:org.apache.flume.source.ExecSource{name:so,state:IDLE} }} sinkRunners:{si=SinkRunner: { policy:org.apache.flume.sink.DefaultSinkProcessor@3de76481 counterGroup:{ name:null counters:{} } }} channels:{sc=org.apache.flume.channel.MemoryChannel{name: sc}} }
14/12/18 17:47:56 INFO node.Application: Starting Channel sc
14/12/18 17:47:56 INFO instrumentation.MonitoredCounterGroup: Monitored counter group for type: CHANNEL, name: sc: Successfully registered new MBean.
14/12/18 17:47:56 INFO instrumentation.MonitoredCounterGroup: Component type: CHANNEL, name: sc started
14/12/18 17:47:56 INFO node.Application: Starting Sink si
14/12/18 17:47:56 INFO node.Application: Starting Source so
14/12/18 17:47:56 INFO source.ExecSource: Exec source starting with command:tail -F /var/log/apache2/access.log
14/12/18 17:47:56 INFO instrumentation.MonitoredCounterGroup: Monitored counter group for type: SINK, name: si: Successfully registered new MBean.
14/12/18 17:47:56 INFO instrumentation.MonitoredCounterGroup: Component type: SINK, name: si started
14/12/18 17:47:56 INFO instrumentation.MonitoredCounterGroup: Monitored counter group for type: SOURCE, name: so: Successfully registered new MBean.
14/12/18 17:47:56 INFO instrumentation.MonitoredCounterGroup: Component type: SOURCE, name: so started

и это команда, которую я использовал для запуска Flume

flume-ng agent -n search -c conf -f ../conf/flume-conf-search 

и у меня есть путь в hdfs

       hadoop fs -mkdir hdfs://localhost:9000/flumelogs

но я не знаю, почему он не пишет в hdfs... я вижу журналы доступа apache2... но Flume не отправляет их в каталог hdfs/flumelogs....пожалуйста, помогите! !


person gstackk    schedule 18.12.2014    source источник


Ответы (2)


Я не думаю, что это проблема с разрешением, вы увидите исключения, когда поток сбрасывается в HDFS. Возможны две причины этой проблемы:

1) в буфере недостаточно данных, флюм не считает, что его нужно сбрасывать. Размер партии вашего приемника – 1000, емкость вашего канала – 20 000. Чтобы убедиться в этом, нажмите CTRL -C для процесса канала, что заставит процесс сбросить данные в HDFS.

2) более вероятная причина в том, что ваш источник exec не работает должным образом. Это может быть связано с проблемой пути с командой tail. Добавьте полный путь к tail в вашей команде, например /bin/tail -F /var/log/apache2/access.log или /usr/bin/tail -F /var/log/apache2/access.log (в зависимости от вашего Проверка системы

which tail 

для правильного пути.

person Erik Schmiegelow    schedule 18.12.2014
comment
привет, Эрик ... так что я использую CTRL-C, чтобы запустить процесс Flume, и я делал это много раз, но каталог flumelogs не показывает файл журнала, связанный с этим ... он полностью пуст, а также я пробовал, используя какой хвост, и добавил / usr / bin /tail -f в моей системе, но даже тогда это не сработало... - person gstackk; 20.12.2014

Не могли бы вы проверить права доступа к этой папке: hdfs://localhost:9000/flumelogs/

Я предполагаю, что у Flume нет разрешения на запись в эту папку.

person Amar    schedule 18.12.2014
comment
вот разрешение для каталога flumelogs и папки flume..... drwxr-xr-x - супергруппа hduser 0 2014-12-18 17:56 hdfs://localhost:9000/flumelogs drwxrwxr-x 7 hduser hadoop 4096 9 декабря 13:57 флейм - person gstackk; 20.12.2014
comment
ваш агент Flume работает как пользователь flume и, похоже, не имеет разрешения на запись в этот каталог. Либо измените владельца этого каталога на пользователя Flume, либо измените его на 777, а затем попробуйте - person Amar; 20.12.2014
comment
Разве Flume не должен жаловаться на отсутствие разрешения на запись в каталог, а не молчать? - person Jorge Cespedes; 09.11.2015