티스토리 뷰

Development/Big Data

[Hadoop] 아파치 플룸

Junchoi 2020. 1. 25. 18:49

아파치 플룸(Apache Flume)이란?

로그 데이터를 수집하기 위한 분산형 소프트웨어입니다.

여러 대의 서버에서 실시간으로 쌓여가는 많은 양의 로그 데이터를 효율적으로 수집하여 하나의 로그 수집 서버로 모아 로그 데이터들을 관리할 수 있습니다.

 

플룸은 시스템 확장성(Scalability)과 신뢰성(Reliability)을 주요 특징으로 설계되었습니다.

따라서 수집 데이터 및 서버의 양에 맞게 효율적으로 플룸 시스템을 확장하여 관리할 수 있고 데이터의 유실없이 수집할 수 있도록 해줍니다.

 

플룸의 0.x 버전을 Flume OG, 1.x 버전은 Flume NG라고 부르며 이 블로그에서의 플룸에 대한 모든 글은 Flume NG를 기준으로 합니다.

 

플룸 구성요소

플룸은 하나의 Agent로 구성되어있고 Agent는 source, channel, sink 라는 세 개의 구성요소로 이루어져있습니다. 

source

- 수집 대상 로그를 수신하고 sink에 전달합니다.

channel

- source와 sink 간의 버퍼로서 dpeendency 제거, 장애 대비를 해줍니다.

- sink가 다음 목적지로 로그를 전달할 때 까지 로그를 보관합니다.

sink

- 수집된 로그를 다음 목적지에 전달합니다.

- 목적지는 HDFS, Hive, ElasticSearch와 같은 외부 저장소 또는 플룸 에이전트일 수 있습니다.

 

플룸 설계 방식

 

플룸은 Agent node와 Collect node에 위치합니다.

 

Agent node

- 로그가 발생하는 서버로 로그를 Collect node에 전달합니다.

 

Collect node

- Agent node에서 받은 로그를 외부 저장소(HDFS 등)에 저장합니다.

 

 

Agent node와 Collect node를 설계하는 다음과 같은 방식이 있습니다.

 

1. Consolidation

- 여러 대의 서버에서 이벤트를 하나의 플룸에 수집하는 방식입니다.

 

2. HA(High Availability)

- Consolidation 방식의 장애를 보완하는 방식입니다.