[인프런] 빅데이터 파일럿 프로젝트3

타키탸키·2022년 5월 23일
0

데이터 사이언스

목록 보기
19/26

플럼(Flume)

주요 구성 요소

  • source
    • 다양한 원천 시스템의 데이터 수집
      • 파일
      • 데이터베이스
      • API
    • 수집한 데이터를 channel로 전달
  • sink
    • 수집한 데이터를 channel로부터 전달받아 최종 목적지에 저장하기 위한 기능
    • HDFS, Hive, ElasticSearch 등을 제공
  • channel
    • source와 sink를 연결
    • 데이터를 버퍼링하는 컴포넌트
    • 메모리, 파일, 데이터베이스를 채널의 저장소로 활용
  • interceptor
    • source와 channel 사이에서 데이터 필터링 및 가공하는 컴포넌트
    • 필요한 데이터가 있을 때, intercept하는 기능
  • agent
    • source -> (interceptor ->) channel -> sink 순으로 구성된 작업 단위
  • 라이선스
    • Apache 2.0
  • 유사 프로젝트
    • Fluented, logstash 등

카프카(Kafka)

주요 구성 요소

  • Broker
    • 카프카의 서비스 인스턴스
    • 다수의 broker를 클러스터로 구성하고 topic이 생성되는 물리적 서버
  • Topic
    • Broker에서 데이터의 발행/소비 처리를 위한 중간 저장소
  • Provider
    • Broker의 특정 Topic에 데이터를 전송(발행)하는 역할
    • 애플리케이션에서 카프카 라이브러리를 이용해 구현
  • Consumer
    • Broker의 특정 Topic에 데이터를 수신(소비)하는 역할
    • 애플리케이션에서 카프카 라이브러리를 이용해 구현
  • 라이선스
    • Apache
  • 유사 프로젝트
    • RabbitMQ 등
  • 특장점
    • 버퍼(buffer)로서의 기능을 하여, 대규모 분산 중간 저장소의 역할을 할 수 있다
    • 장애 발생 시, 트랜잭션 처리가 가능하다
    • 따라서, Flume에서 DB로 데이터를 전송하기 전, 카프카를 거치는 것이 바람직하다

실습 환경 정의

아키텍처

  • 배치 데이터
    • flume agent
      • source: SpoolDir
      • memory channel
      • sink: Logger
    • Hadoop
      • log file
  • 실시간 데이터
    • flume agent
      • source: Exec Tail
      • memory channel
      • sink: Kafka
    • Kafka
      • topic

수집 기능 테스트

로그 시뮬레이터 작동

  • 백그라운드 방식으로 로그 시뮬레이터 실행
  • 시뮬레이터 정상 동작 확인
    • log 파일(txt) 생성 확인
  • 생성된 log 파일을 Flume 에이전트의 SpoolDir 경로로 옮김
    • Flume의 에이전트 작동(모니터링)
  • 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 종료
profile
There's Only One Thing To Do: Learn All We Can

0개의 댓글