16/04/29 09:36:15 ERROR sink.AbstractRpcSink: Rpc Sink avro-sink: Unable to get event from channel memoryChannel. Exception follows.
org.apache.flume.ChannelException: Take list for MemoryTransaction, capacity 10 full, consider committing more frequently, increasing capacity, or increasing thread count
at org.apache.flume.channel.MemoryChannelMemoryTransaction.doTake(MemoryChannel.java:96)atorg.apache.flume.channel.BasicTransactionSemantics.take(BasicTransactionSemantics.java:113)atorg.apache.flume.channel.BasicChannelSemantics.take(BasicChannelSemantics.java:95)atorg.apache.flume.sink.AbstractRpcSink.process(AbstractRpcSink.java:354)atorg.apache.flume.sink.DefaultSinkProcessor.process(DefaultSinkProcessor.java:68)atorg.apache.flume.SinkRunnerPollingRunner.run(SinkRunner.java:147)
at java.lang.Thread.run(Thread.java:745)
注意點:sink的batchsize參數 不能大於transactionCapacity的參數;這個sink的batchsize是什麼意思呢,就是sink會一次從channel中取多少個event去發送,而這個發送是要最終以事務的形式去發送的,因此這個batchsize的event會傳送到一個事務的緩存隊列中(takeList),這是一個雙向隊列,這個隊列可以在事務失敗時進行回滾(也就是把取出來的數據吐memeryChannel的queue中),它的初始大小就是transactionCapacity定義的大小;在sink中,channel的transactionCapacity參數不能小於sink的batchsize。