아래와 같은 에러 발생 시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
18/02/05 17:49:00 INFO hdfs.BucketWriter: Creating hdfs://master:9000/input/flume/bird/FlumeData.1517815114643.tmp
18/02/05 17:49:00 INFO hdfs.BucketWriter: Closing hdfs://master:9000/input/flume/bird/FlumeData.1517815114643.tmp
18/02/05 17:49:00 INFO hdfs.BucketWriter: Renaming hdfs://master:9000/input/flume/bird/FlumeData.1517815114643.tmp to hdfs://master:9000/input/flume/bird/FlumeData.1517815114643
18/02/05 17:49:00 INFO hdfs.BucketWriter: Creating hdfs://master:9000/input/flume/bird/FlumeData.1517815114644.tmp
18/02/05 17:49:02 ERROR source.SequenceGeneratorSource: seqGenSrc source could not write to channel.
org.apache.flume.ChannelException: Unable to put event on required channel: org.apache.flume.channel.MemoryChannel{name: memoryChannel}
        at org.apache.flume.channel.ChannelProcessor.processEvent(ChannelProcessor.java:275)
        at org.apache.flume.source.SequenceGeneratorSource.process(SequenceGeneratorSource.java:76)
        at org.apache.flume.source.PollableSourceRunner$PollingRunner.run(PollableSourceRunner.java:139)
        at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.flume.ChannelFullException: Space for commit to queue couldn't be acquired. Sinks are likely not keeping up with sources, or the buffer size is too tight
        at org.apache.flume.channel.MemoryChannel$MemoryTransaction.doCommit(MemoryChannel.java:130)
        at org.apache.flume.channel.BasicTransactionSemantics.commit(BasicTransactionSemantics.java:151)
        at org.apache.flume.channel.ChannelProcessor.processEvent(ChannelProcessor.java:267)
        ... 3 more
18/02/05 17:49:03 INFO hdfs.BucketWriter: Closing hdfs://master:9000/input/flume/bird/FlumeData.1517815114644.tmp
18/02/05 17:49:03 INFO hdfs.BucketWriter: Renaming hdfs://master:9000/input/flume/bird/FlumeData.1517815114644.tmp to hdfs://master:9000/input/flume/bird/FlumeData.1517815114644
 
cs


Sink가 Source의 전송 속도를 유지하지 못하거나 Buffer Size의 크기가 작아서 queue에 저장하기 위한 공간 확보를 하기 어렵다는 문제입니다.

초당 수용할 수 있는 건 수를 올리기 위해서 flume-conf.properties 파일의 적절한 조정이 필요할 듯합니다.

1. flume-conf.properties

 1-1. flume-conf.properties 편집

1
2
$ vi ./conf/flume-conf.properties
 
cs

* 절대 경로: /usr/local/flume/conf/flume-conf.properties


 1-2. 다음과 같이 channel의 속성값을 충분히 할당합니다.

1
2
3
agent1.channels.memoryChannel.capacity = 1000
agent1.channels.memoryChannel.keep-alive = 60
 
cs

* capacity: 채널 안에 저장된 이벤트의 최대 수

* keep-alive: 이벤트의 추가 또는 삭제를 위해 설정하는 초 단위 timeout 값



2. flume-env.sh

 2-1. flume-env.sh 편집

1
2
$ vi ./conf/flume-env.sh
 
cs

* 절대 경로: /usr/local/flume/conf/flume-env.sh


 2-2. 다음과 같이 JAVA_OPTS 환경 변수의 메모리 설정값을 적절히 추가 및 조정합니다.

1
2
export JAVA_OPTS="-Xms1024m -Xmx1024m"
 
cs



+ Recent posts