플럼(Flume)
주요 구성 요소
- source
- 다양한 원천 시스템의 데이터 수집
- 수집한 데이터를 channel로 전달
- sink
- 수집한 데이터를 channel로부터 전달받아 최종 목적지에 저장하기 위한 기능
- HDFS, Hive, ElasticSearch 등을 제공
- channel
- source와 sink를 연결
- 데이터를 버퍼링하는 컴포넌트
- 메모리, 파일, 데이터베이스를 채널의 저장소로 활용
- interceptor
- source와 channel 사이에서 데이터 필터링 및 가공하는 컴포넌트
- 필요한 데이터가 있을 때, intercept하는 기능
- agent
- source -> (interceptor ->) channel -> sink 순으로 구성된 작업 단위
카프카(Kafka)
주요 구성 요소
- Broker
- 카프카의 서비스 인스턴스
- 다수의 broker를 클러스터로 구성하고 topic이 생성되는 물리적 서버
- Topic
- Broker에서 데이터의 발행/소비 처리를 위한 중간 저장소
- Provider
- Broker의 특정 Topic에 데이터를 전송(발행)하는 역할
- 애플리케이션에서 카프카 라이브러리를 이용해 구현
- Consumer
- Broker의 특정 Topic에 데이터를 수신(소비)하는 역할
- 애플리케이션에서 카프카 라이브러리를 이용해 구현
- 특장점
- 버퍼(buffer)로서의 기능을 하여, 대규모 분산 중간 저장소의 역할을 할 수 있다
- 장애 발생 시, 트랜잭션 처리가 가능하다
- 따라서, Flume에서 DB로 데이터를 전송하기 전, 카프카를 거치는 것이 바람직하다
실습 환경 정의
아키텍처
- 배치 데이터
- flume agent
- source: SpoolDir
- memory channel
- sink: Logger
- Hadoop
- 실시간 데이터
- flume agent
- source: Exec Tail
- memory channel
- sink: Kafka
- Kafka
수집 기능 테스트
로그 시뮬레이터 작동
- 백그라운드 방식으로 로그 시뮬레이터 실행
- 시뮬레이터 정상 동작 확인
- 생성된 log 파일을 Flume 에이전트의 SpoolDir 경로로 옮김
- Kafka Consumer 작동
- Kafka borker의 topic 내부 message 수신
kafka-console-consumer --bootstrap-server ... -topic ... --partition 0
수집 기능 점검
- 시뮬레이터로 생성된 log 파일이 Flume의 표준 출력 log로 전송됐는지 확인
tail
명령어 활용
- 상태값 데이터가 출력되면 성공
- 수집되고 있는 event의 header와 body 출력
tail -f /var/log/flume-ng/flume-cmf-flume-Agent-server02.hadoop.com.log
- kafka Consumer 콘솔 창 확인
- 백그라운드로 실행하고 있는 로그 시뮬레이터 종료
- pid 종료