반응형

Flume 기본 개념


Flume ???

Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data (https://flume.apache.org)

대량의 로그 데이터를 효과적으로 집, 집계, 이동하기 위한, 분산되고 안정적이고 신뢰성이 높은 서비스

* 분산된 = 수평확장 가능

* 안정적인 = 시스템이 뻗어서 서비스가 안되는 일이 없는

* 신뢰성 높은 = 데이터가 유실되지 않는


특징 ???

distributed, reliable, and available



Flume을 쓰면 좋은 점

수평확장 가능,

이미 개발된 많은 아답터 사용 가능(가져다 쓰면 끝),

소스까지 수정/활용 가능(오픈소스니까)

==> 쉽게 말해서 많은 량의 데이터를 안정성 높게 수집해야하고,

빨리(필요하면 수정해서) 개발해야하고,

그런데 이렇게 하기 위해 쓸 수 있는 돈이 별로 없을때

적합한 데이터 수집 솔루션


구성 ???

Agent들로 구성,     Agent = Source + Channel + Sink

Sources ???

Syslog, NetCat, Exec, Spooldir, Http, JMS, Kafka ......

==> 한마디로 (이름대로) 왠만한 Log Data는 모두 쉽게 수집할 수 있음.​

Channel Selector 와  Built-in Interceptor들을 사용하여 Contextual Routing을 할 수 있음

(예 : A서버에서 온 메시지는 받은 시간을 붙여서(Interceptor) HDFS 파일(ChannelSelector)로 저장)

Built-in Interceptor : Timestamp, Host, Static, UUID, etc

Channel Selector Type : Replication, Multiplexing


Channels ???

Source와 Sink를 연결해주는 기능

데이터 전송을 확실하게 보장하기 위해 Transaction 기능(전달 성공/실패) 제공

Built-In Channel : Memory, File JDBC, Kafka ...


Sinks ???

채널로부터 받은 데이터를 External Repository에 전달

Sink Groups을 이용하여 Load balancing, Failover 가능



이 모든 작업들이 특이한 환경이나 요건이 없으면 configuration 만으로 손쉽게 가능

2011년 Cloudera에서 아파치로 오픈한 이후로 많은 Built-in Adapter 가 개발 되어 사용/수정(Bug Fix) 되었기 때문임.


반응형

+ Recent posts