Put queue for MemoryTransaction of capacity 2000 full

2018-07-02 09:28:08,140 (PollableSourceRunner-KafkaSource-r1) [ERROR - org.apache.flume.source.kafka.KafkaSource.doProcess(KafkaSource.java:317)] KafkaSource EXCEPTION, {}
org.apache.flume.ChannelException: Put queue for MemoryTransaction of capacity 2000 full, consider committing more frequently, increasing capacity or increasing thread count
at org.apache.flume.channel.MemoryChannel$MemoryTransaction.doPut(MemoryChannel.java:85)
at org.apache.flume.channel.BasicTransactionSemantics.put(BasicTransactionSemantics.java:93)
at org.apache.flume.channel.BasicChannelSemantics.put(BasicChannelSemantics.java:80)
at org.apache.flume.channel.ChannelProcessor.processEventBatch(ChannelProcessor.java:191)
at org.apache.flume.source.kafka.KafkaSource.doProcess(KafkaSource.java:298)
at org.apache.flume.source.AbstractPollableSource.process(AbstractPollableSource.java:60)

at org.apache.flume.source.PollableSourceR


最大容量capacity、事务的event最大容量transCapacity

capacity        100        The maximum number of events stored in the channel
transactionCapacity        100        The maximum number of events the channel will take from a source or give to a sink per transaction
transactionCapacity不要大于capacity即可

初始化参数,可以尝试
capacity 1000

transactionCapacity 100


这是由于过了个周末,数据一直往topic里发送,channel里累积了太多数据没有sink。

将channel的capacity配置的非常大,就不报这个错了。可是又报内存溢出了。因为本机器的内存只有4G:

agent1.sinks.k1.hdfs.batchSize = 10000

# Use a channel which buffers events in memory
agent1.channels.c1.type = memory
agent1.channels.c1.capacity = 1000000000
agent1.channels.c1.transactionCapacity = 10000

agent1.channels.c1.keep-alive = 300

将agent1.channels.c1.capacity = 1000000000一个0一个0的减少,当capacity = 10000000,没有报queue full,也没有报内存溢出。但是报:

2018-07-02 11:14:12,041 (SinkRunner-PollingRunner-DefaultSinkProcessor) [WARN - org.apache.flume.sink.hdfs.HDFSEventSink.process(HDFSEventSink.java:443)] HDFS IO error
java.io.IOException: Callable timed out after 10000 ms on file: hdfs://bg01:9000/flume/data/2018/07/02/liuzhouPLC/2018070206.1530501240650.log.tmp
at org.apache.flume.sink.hdfs.BucketWriter.callWithTimeout(BucketWriter.java:715)
at org.apache.flume.sink.hdfs.BucketWriter.open(BucketWriter.java:252)
at org.apache.flume.sink.hdfs.BucketWriter.append(BucketWriter.java:541)
at org.apache.flume.sink.hdfs.HDFSEventSink.process(HDFSEventSink.java:401)
at org.apache.flume.sink.DefaultSinkProcessor.process(DefaultSinkProcessor.java:67)
at org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:145)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.concurrent.TimeoutException
at java.util.concurrent.FutureTask.get(FutureTask.java:205)
at org.apache.flume.sink.hdfs.BucketWriter.callWithTimeout(BucketWriter.java:708)

... 6 more


All(AbstractConfig.java:165)] ConsumerConfig values: 
metric.reporters = []
metadata.max.age.ms = 300000
value.deserializer = class org.apache.kafka.common.serialization.ByteArrayDeserializer
group.id = flume_ng
partition.assignment.strategy = [org.apache.kafka.clients.consumer.RangeAssignor]
reconnect.backoff.ms = 50
sasl.kerberos.ticket.renew.window.factor = 0.8
max.partition.fetch.bytes = 1048576
bootstrap.servers = [192.168.7.151:9092, 192.168.7.152:9092, 192.168.7.153:9092]
retry.backoff.ms = 100
sasl.kerberos.kinit.cmd = /usr/bin/kinit
sasl.kerberos.service.name = null
sasl.kerberos.ticket.renew.jitter = 0.05
ssl.keystore.type = JKS
ssl.trustmanager.algorithm = PKIX
enable.auto.commit = false
ssl.key.password = null
fetch.max.wait.ms = 500
sasl.kerberos.min.time.before.relogin = 60000
connections.max.idle.ms = 540000
ssl.truststore.password = null
session.timeout.ms = 30000
metrics.num.samples = 2
client.id = 
ssl.endpoint.identification.algorithm = null
key.deserializer = class org.apache.kafka.common.serialization.StringDeserializer
ssl.protocol = TLS
check.crcs = true
request.timeout.ms = 40000
ssl.provider = null
ssl.enabled.protocols = [TLSv1.2, TLSv1.1, TLSv1]
ssl.keystore.location = null
heartbeat.interval.ms = 3000
auto.commit.interval.ms = 5000
receive.buffer.bytes = 32768
ssl.cipher.suites = null
ssl.truststore.type = JKS
security.protocol = PLAINTEXT
ssl.truststore.location = null
ssl.keystore.password = null
ssl.keymanager.algorithm = SunX509
metrics.sample.window.ms = 30000
fetch.min.bytes = 1
send.buffer.bytes = 131072
auto.offset.reset = earliest
2018-07-02 14:40:18,164 (lifecycleSupervisor-1-4) [INFO - org.apache.kafka.common.utils.AppInfoParser$AppInfo.<init>(AppInfoParser.java:82)] Kafka version : 0.9.0.1
2018-07-02 14:40:18,165 (lifecycleSupervisor-1-4) [INFO - org.apache.kafka.common.utils.AppInfoParser$AppInfo.<init>(AppInfoParser.java:83)] Kafka commitId : 23c69d62a0cabf06

然后就没反应了!!!!

并且之前系统可用内存为200M。报这个错的时候可用内存1400M了。


既然是memoryChannel出了问题。简单粗暴,重启linux系统。重启组件,好了~

猜你喜欢

转载自blog.csdn.net/yblbbblwsle/article/details/80880652