여러 관련 프로그램 중에서 Flume을 설정 할 일이 있어 알아 본 내용을 포스팅 하겠습니다.
About Flume

Flume OG 와 Flume NG의 차이점


Flume NG의 아키텍쳐를 보면 Agent안에 Source, Sink, Channel이 있는 것을 확인 할 수 있습니다. Source, Sink는 Flume OG에서도 Agent 안에 있던 아이들 입니다. Source는 데이터가 Agent로 들어오는 곳이고 Sink는 Agent가 데이터를 내보낼때 사용 하는곳 입니다.사람을 Agent라고 하면 Source는 입이고 Sink는...똥......꼬?가 되겠네요. 음식물(데이터)이 입(Source)을 통해 몸(Channel)에 들어오면 똥꼬(Sink)를 통해 똥(데이터)으로 나오고 그 똥들은 정화조(HDFS)에 모입니다. Channel은 일종의 큐라고 생각하면 됩니다. Source로 부터 데이터가 들어오면 Channel에 쌓이고 Sink는 Channel에 있는 데이터를 꺼내와 내보내게 됩니다. 이렇게 함으로써 Flume OG에서는 전체 Flow를 관리하던 Master가 있어야 됐지만 Flume NG는 Agent 하나하나의 설정만 알고 있으면 되게 되었습니다.
Flume NG Flow 구성 종류
Setting multi-agent flow
Consolidation
Multiplexing the flow
Flume NG로 구성 할 수 있는 Flow 구성도 입니다. 가운데 있는 Consolidation Flow가 Flume OG의 아키텍쳐와 비슷 하다는걸 알 수 있습니다. Flume NG는 각각의 Agent만 알고 있으면 된다고 했습니다. 그 의미는 Source의 Type과 Sink의 Type만 결정하여 설정해 놓으면 Agent가 수평적으로 확장이 되어도 다른 Agent는 신경 쓸 필요가 없어집니다. Consolidation Flow를 보면 각각의 Agent가 하나의 Agent로 데이터를 보내고 있는것을 알 수 있습니다. Flume OG의 용어로 말하자면 각각의 Agent에서 Collector로 데이터를 보내는 것입니다. 하지만 Flume NG에서는 Collector가 아닌 Agent에서 Agent로 데이터를 이동하는 것 뿐입니다. Multiplexing Flow를 보면 Channel과 Sink를 여러개 만들어 각각의 저장소에 저장하거나 다른 Agent로 보낼 수도 있음을 확인 할 수 있습니다. 굉장히 심플해 지면서 유연성있게 변경된 걸 확인 할 수 있습니다.
Agent Type
모든 Type들을 살펴본 것은 아니며 몇가지 테스트한 Type에 대해서만 설명 드리도록 하겠습니다.
Source Type
- Avro Source : Agent 와 Agent를 연결해 주는 Type입니다. Agent끼리 연결 할 경우는 Source와 Sink의 Type를 avro로 해주면 됩니다.
- Exec Source : 파일을 읽을때 사용 하는 Type으로서 Command 속성을 이용하여 tail 명령어로 데이터를 읽어 올 수 있습니다.
- NetCat Type : 터미널에서 데이터를 입력 받을 때 사용 합니다.
- Syslog Source : SyslogTCP와 SyslogUDP로 나뉘며 SyslogTCP는 로그 한줄 한줄이 새로운 Event이이나 SyslogUDP는 전체로그를 한번의 Event로 보냅니다.
이밖에도 Scribe Source, Json Source, Custom Source 등 여러 Type이 있습니다.
Sink Type
- Avor Sink : Agent 와 Agent를 연결해 주는 Type입니다. Agent끼리 연결 할 경우는 Source와 Sink의 Type를 avro로 해주시면 됩니다.
- HDFS Sink : Hadoop 저장장치에 저장할때 사용 하는 Type 입니다.
- File_Roll Sink : 원하는 저장장치에 파일로 저장한다.
- HBase Sink : HBase에 형태로 저장한다.
이밖에도 Logger Sink, Custom Sink등 여러 Type이 있습니다.
Channel Type
- Memory Channel : Source에서 받은 Event를 Memory에 가지고 있는 방식으로 빠르고 간편하지만 Event를 잃어버릴 수도 있습니다.
- JDBC Channel : JDBC 형태로 저장한다.
- File Channel : File 형태로 저장한다.
이밖에도 Custom Channel도 있습니다.
모든 Type를 다 테스트하기에는 어려운 점이 있어 제가 알아본 Type만 작성 하였습니다. Flume User Guide를 참고하시면 여러 Type에 관해 알 수 있습니다.
참고
[Flume] Flume 설치부터 예제까지...
댓글 없음:
댓글 쓰기