본문 바로가기
빅데이터/flume

[flume] ChannelFullException 오류 확인

by hs_seo 2020. 6. 2.

플룸 메모리 채널을 이용할 때 ChannelFullException이 발생하는 경우가 있습니다. 보통 메모리 채널과 연결된 싱크에서 데이터가 쌓이는 속도보다 빠르게 데이터를 처리하지 못하여 발생합니다. 메모리 채널과 파일 싱크를 연결했을 때 메모리 채널에 데이터가 쌓이는 속도보다 파일을 쓰는 속도가 느릴때 발생할 수 있습니다.

 

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)

 

이런경우 메모리 채널의 캐패시티를 늘려주어 메모리에 보관할 데이터를 늘려주거나, 채널을 변경하여 파일 채널로 바꾸어 주는 것이 좋습니다. 또한 채널 셀렉터를 이용하여 문제가 발생할 때 파일로 저장하도록 설정하는 것도 좋은 방법입니다.

 

Flume Memory Channel 설정

플름의 메모리 채널은 이벤트를 메모리 큐에 보관합니다. 메모리 채널은 처리는 빠르지만, 오류가 발생했을 때 데이터 유실이 발생할 수 있습니다. 캐피시티를 늘려서 데이터의 저장 공간을 늘릴 수 있습니다.

# 채널 이름 c1, 타입은 메모리 채널 
a1.channels = c1
a1.channels.c1.type = memory
a1.channels.c1.capacity = 10000  # 메모리에 보관할 이벤트의 갯수 
a1.channels.c1.transactionCapacity = 10000  # 소스, 싱크로 처리할 트랜잭션의 갯수 
a1.channels.c1.keep-alive = 100  # 이벤트를 추가하지 못할 때 이벤트를 보관하는 시간 
a1.channels.c1.byteCapacityBufferPercentage = 20
a1.channels.c1.byteCapacity = 800000
반응형

'빅데이터 > flume' 카테고리의 다른 글

[flume] HTTP로 플룸 모니터링 설정하는 방법  (0) 2020.06.03
[flume] 플룸 구조, 특징  (0) 2019.07.26