2015-07-27 3 views
1

Я отправляю события из флюма в тему кафки через слив флюма .... для этого я использую канал с файлами, но я получаю очень мало производительности при записи на кафку, скорость 190 мс в секунду, в то время как источник дыма сбрасывает события на канал со скоростью 3000 msg в секунду .... Я хочу увеличить производительность моего приемника ......, пожалуйста, помогите, как я могу добиться этого .. ..Я попытался различные конфигурации для этого .... это мой конфигурационный файл -----Как улучшить производительность раковины дымохода

agent1.sources = AspectJ 
agent1.channels = fileTailChannel 
agent1.sinks = APMNullSink 

#AspectJ source 
agent1.sources.AspectJ.type=com.flume.test.DumbSource 
agent1.sources.AspectJ.path=/media/sf_New_Log/calltracedata.txt 
agent1.sources.AspectJ.eventtype=CallTrace 
agent1.sources.AspectJ.channels=fileTailChannel 
agent1.sources.AspectJ.batchSize=1000 
agent1.sources.AspectJ.batchDurationMillis=1000 
agent1.sources.AspectJ.application = AspectJ 
agent1.sources.AspectJ.multi.line.mode=true 
agent1.sources.AspectJ.new.event.marker={ 
agent1.sources.AspectJ.event.terminator=} 
agent1.sources.AspectJ.tailer.start.reading.from.end = false 


#File Tail Channel 
agent1.channels.fileTailChannel.type = file 
agent1.channels.fileTailChannel.checkpointDir = /tmp/flume/filechannel/checkpoint 
agent1.channels.fileTailChannel.dataDirs = /tmp/flume/filechannel/data 
agent1.channels.fileTailChannel.transactionCapacity=100000 

#APM Null Sink 
agent1.sinks.APMNullSink.type = com.flume.test.TestJSON2KafkaSink 
agent1.sinks.APMNullSink.channel = fileTailChannel 
agent1.sinks.APMNullSink.testSize = 1000 
agent1.sinks.APMNullSink.zk.connect=sandbox.hortonworks.com:2181 
agent1.sinks.APMNullSink.metadata.broker.list=sandbox.hortonworks.com:6667 
agent1.sinks.APMNullSink.topic=Test 
agent1.sinks.APMNullSink.producer.type=async 
agent1.sinks.APMNullSink.serializer.class=kafka.serializer.StringEncoder 
agent1.sinks.APMNullSink.batch.num.messages=1000 
agent1.sinks.APMNullSink.batchSize=50000 
agent1.sinks.APMNullSink.batchDurationMillis=1000 
agent1.sinks.APMNullSink.queue.buffering.max.ms=5000 
agent1.sinks.APMNullSink.queue.buffering.max.messages=100000 
agent1.sinks.APMNullSink.send.buffer.bytes=2097152 
agent1.sinks.APMNullSink.compression.codec=snappy 

ответ

0

Я думаю, ваша проблема в том, что все работает на одной коробке, так что быстрый прием пищи в файл канал влияет на кафку, для чего нужно писать больше работы.

Я предлагаю два варианта:

  1. Установите емкость файла канала, чтобы ограничить размер очереди, поэтому он не идет быстрее, чем Кафка может глотать.
  2. Или используйте канал kafka: https://flume.apache.org/FlumeUserGuide.html#kafka-channel. Однако в этом случае сообщения в теме будут перенесены в AvroFlumeEvent, поэтому подписчикам необходимо десериализовать этот класс.

Также я не понимаю, зачем вам нужен собственный com.flume.test.TestJSON2KafkaSink вместо того, который поставляется с Flume. Возможно, в вашем коде есть проблемы с производительностью.

+0

Фактически я добавляю некоторые заголовки и некоторые дополнительные детали с событием и преобразовываю его в JSON, поэтому я использую свой собственный код в приемнике для отправки данных в тему кафки ..... но код выглядит хорошо. Я проверил время выполнения для каждого метода в классе и выглядит отлично .. –

Смежные вопросы