Hadoop 如何提高水槽水槽的性能

Hadoop 如何提高水槽水槽的性能,hadoop,flume,Hadoop,Flume,我通过flume sink将事件从flume发送到kafka主题…为此,我使用文件通道,但在写入kafka时性能非常差flume sink以每秒190 msg的速率写入,而flume source以每秒3000 msg的速率将事件转储到通道…我想增加我的接收器性能…请帮助我如何实现…我尝试了各种配置…这是我的配置文件----- 我认为你的问题是所有的东西都在一个盒子上运行,所以对文件通道的快速接收正在影响kafka,它需要做更多的工作来编写 我建议有两个选择: 设置文件通道的容量以限制队列大小,

我通过flume sink将事件从flume发送到kafka主题…为此,我使用文件通道,但在写入kafka时性能非常差flume sink以每秒190 msg的速率写入,而flume source以每秒3000 msg的速率将事件转储到通道…我想增加我的接收器性能…请帮助我如何实现…我尝试了各种配置…这是我的配置文件-----


我认为你的问题是所有的东西都在一个盒子上运行,所以对文件通道的快速接收正在影响kafka,它需要做更多的工作来编写

我建议有两个选择:

  • 设置文件通道的容量以限制队列大小,使其速度不会超过kafka的接收速度
  • 或使用卡夫卡频道:。但是,在这个选项中,主题中的消息被包装到一个AvroFlumeEvent中,因此订阅者需要使用该类进行反序列化

  • 另外,我不明白为什么您需要拥有com.flume.test.TestJSON2KafkaSink而不是flume附带的com.flume.test.TestJSON2KafkaSink。可能您的代码中存在一些性能问题。

    我认为您的问题在于所有内容都在一个盒子上运行,因此对文件通道的快速接收正在影响kafka,这需要做更多的编写工作

    我建议有两个选择:

  • 设置文件通道的容量以限制队列大小,使其速度不会超过kafka的接收速度
  • 或使用卡夫卡频道:。但是,在这个选项中,主题中的消息被包装到一个AvroFlumeEvent中,因此订阅者需要使用该类进行反序列化

  • 另外,我不明白为什么您需要拥有com.flume.test.TestJSON2KafkaSink而不是flume附带的com.flume.test.TestJSON2KafkaSink。可能您的代码中存在一些性能问题。

    实际上,我正在为事件添加一些标题和一些额外的详细信息,并将其转换为JSON,因此我在sink中使用自己的代码向kafka topic发送数据……但是代码看起来不错,我已经检查了类中每个方法的执行时间,看起来不错……实际上我在事件中添加了一些头和一些额外的细节,并将其转换为JSON,因此我在sink中使用自己的代码将数据发送到kafka topic…但是代码看起来很好我已经检查了类中每个方法的执行时间,看起来很好。。
    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