플럼(Flume)이란?

 

Apache Flume(이하 플룸)은 클라우데라에서 처음 개발 돼, 2011년 클라우데라를 통해 처음 소개 되어서 아파치 소프트웨어 프로젝트에 기증되어 최상위 프로젝트로 격상되어 사용중입니다. 다양한 수집 요구 사항들을 해결하기 위해 기능으로 구성된 소프트웨어이며, 로그데이터를 깔끔하게 수집하는 데 이만한 게 없으며, 많은 기업들에서 실제 서비스 로그데이터 관리를 위해 사용하고 있습니다.

 

Apache Flume 프로젝트는 공식 홈페이지는 https://flume.apache.org/ 입니다.

 

Flume의 특징

 

1) 시스템 신뢰성 (Reliability) - 장애가 발생시 로그의 유실없이 전송할 수 있는 기능입니다.

2) 시스템 확장성 (Scalability) - Agent의 추가 및 제거가 용이합니다.

3) 관리 용이성 (Manageability) - 간결한 구조로 관리가 용이합니다.

4) 기능 확장성 (Extensibility) - 새로운 기능을 쉽게 추가할 수 있습니다.

 

Flume의 주요 구성 요소

 

1) Source - 데이터가 발생하는 소스로부터 (로그)데이터 수집 담당

: 다양한 원천 시스템의 데이터를 수집하기 위해 Avro, Thrift, JMS, Spool Dir, Kafka등 여러 주요 컴포넌트를 제공하며, 수집한 데이터를 Channel로 전달합니다. 쉽게 설명하면 외부 이벤트가 생성되어 수집되는 영역이라고 할 수 있습니다.

- 1개 구성, 복수 Channel 지정

 

2) Sink - 수집한 데이터를 외부로 보내는 역할

: 수집한 데이터를 Channel로부터 전달을 받아서 최종 목적지에 저장하기 위한 기능으로 HDFS, Hive, Logger, Avro, ElasticSearch, Thrift등을 제공합니다. 쉽게 설명하면 수집된 로그/이벤트를 목적지에 전달하는 역할을 합니다.

 

3) Channel

: Sorce와 Sink를 연결하며, 데이터를 버퍼링하는 컴포넌트로 메모리, 파일, 데이터베디스를 채널의 저장소로 활용합니다. Source와 Sink 간의 버퍼 구간 - 채널 별로 1개 Sink 지정

 

4) Interceptor

: Source와 Channel 사이에서 데이터 필터링 및 가공하는 컴포넌트로서 Timestamp, Host, Filttering 등을 기본 제공하며, 필요시 사용자 정의 Interceptor를 추가합니다. 쉽게 말하면 수집된 로그/이벤트 가공 하는 역할을 합니다.

 

5) Agent

: Source -> interceptor -> Channel -> Sink 컴포넌틑 순으로 구성된 작업 단위로 독립된 인스턴스로 생성됩니다.

Flume을 관리하는 관리자 역할을 합니다.

 

Flume의 진행 순서

 

                                             (flume.apache.org/ 이미지 사용)

 

 

Flume 진행 순서

수집 대상 데이터(로그/이벤트) 생성  ->  수집 대상 로그/이벤트를 Source에 수신  ->

Source는 수신한 메시지를 Channel에 전달  ->  Sink는 Channel로부터 메시지를 가져와서 목적지에 데이터 전달/저장

 

Flume 의 단점

- Flume의 가장 큰 취약점은 데이터의 안정성

Flume은 Channel로 메모리와 파일 그리고 JDBC를 제공합니다. 메모리 타입은 처리 성능은 좋지만, Flume 장애 발생 시 데이터가 유실의 문제가 있습니다. 반면 파일 타입을 사용하면 데이터 안정성은 향상되지만, 성능이 크게 떨어집니다. 그리고 고가용성 모드로 관리하기 어렵다는 것입니다. 이러한 문제는 Kafka와 결합으로 해결할 수 있습니다.

 

Flume 의 장점

1. 다양한 소스와 목적지에 대한 컴포넌트가 이미 구현되어 있습니다

2. 일반적으로 Flume 설치 및 설정만으로 작업을 완료합니다.

3. 저장된 데이터를 안전하게 관리할 수 있고, 구성이 간단하고 확장성이 좋습니다. 

 

 

Flume 설치

 

 

 

 

 

 

 

 

+ Recent posts