연속적으로 생성되는 데이터 스트림을 수집 및 전송하고 HDFS에 저장할 수 있는 도구이다. 로그파일, 소셜 미디어 데이터, 이메일 메시지 등 다양한 데이터를 다룬다.
Flume의 구성요소는 다음과 같다.
소스
외부 데이터 소스에 설치되는 에이전트이다.
데이터를 수신한 후 채널로 전달하는 모듈이며, 하나 이상의 채널로 데이터를 전달할 수 있다.
Avro, Thrift, Exec, JMS, Spooling Directory, Taildir, Kafka, NetCatTCP, NetCatUDP, Sequence Generator, Syslog, HTTP, Stress, Custom, Scribe등 타입의 소스가 있다.
싱크
데이터 목적지에 설치되는 에이전트이다.
데이터를 HDFS, 로컬파일, 혹은 다름 Flume 에이전트 등에 전달하는 모듈이다. 하나의 싱크는 오직 한 채널에서만 데이터를 전달받을 수 있다.
HDFS, Hive, Logger, Avro, Thrift, IRC, File Roll, Null, HBase, Morphline Solr, Elastic Search, Kite Dataset, Kafka, HTTP, Custom등 타입의 싱크가 있다.
채널
소스와 싱크 간에 데이터를 받는 통로이다.
소스 데이터를 싱크로 전달하는 데이터 Queue로, 소스의 속도와 싱크의 속도를 조절하는 일종의 버퍼이다. 채널의 데이터는 기본적으로 메모리에 저장되지만, 네트워크 장애 시 데이터 유실을 방지하기 위해 디스크에 저장하도록 설정이 가능하다. 하나의 소스로부터 데이터를 받아오고, 하나 이상의 싱크로 데이터를 전달할 수 있다.
Single Flume Agent System
Multi Flume Agent System: Avro의 데이터 직렬화를 통해 통합(Consolidation)한다.
Multiplexing Flume Agent System