데이터 & 분석 (3)

이기태·2024년 8월 1일
0

AWS

목록 보기
44/62

Kinesis Data Analytics (x)

  • Kinesis Data Analytics 종류
    • SQL 애플리케이션용 Kinesis Data Analytics (SQL 애플리케이션)

      - 중앙에 위치한다.
      - Kinesis Data Streams와 Kinesis Data Firehose 데이터 소스에서 데이터를 읽는다.
      - SQL 문에 적용해 실시간 분석을 처리할 수 있다.
      - S3 버킷의 데이터를 참조해 참조 데이터를 조인할 수도 있다.
      • 여러 대상에 데이터 전송 가능
        • 전송 방법(2가지)
        1. Kinesis Data Streams는 Kinesis Data Analytics의 실시간 쿼리로 스트림을 생성
          -> 사례: EC2에서 실행하는 애플리케이션, Lambda로 스트리밍하는 데이터를 실시간으로 처리할 수 있다.
        2. Kinesis Data Firehose로 바로 전송할 수도 있다.
          -> 사례: S3나 Redshift, OpenSearch, 기타 Firehose 대상에 전송된다.

      • 세부 내용
        - 데이터 소스: Kinesis Data Streams / Kinesis Data Firehose
        - S3로 데이터를 강화할 수 있다.
        - 완전 관리형 서비스이므로 서버를 프로비저닝하지 않아도됌
        - 오토 스케일링 가능
        - Kinesis Data Analytics에 전송된 데이터만큼 비용을 지불
        - 출력: Kinesis Data Streams나 Kinesis Data Firehose에 데이터를 출력할 수 있다.
        - 사용 사례: 시계열 분석 / 실시간 대시보드 / 실시간 지표
    • Apache Flink용 Kinesis Data Analytics (스트리밍 애플리케이션)
      - Kinesis Data Analytics에서 Apache Flink 사용 가능
      - Apache Flink를 사용하면 자바, 스칼라, SQL로 애플리케이션을 작성하고, 스트리밍 데이터를 처리/분석할 수 있다.

      - Flink는 코드로 작성해야하는 애플리케이션이다.
      - Flink 애플리케이션을 Kinesis Data Analytics의 백그라운드에서 Flink 전용 클러스터에서 실행할 수 있음.
      - Apache Flink을 사용해 두 개의 메인 데이터 소스인 Kinesis Data Streams나 Amazon MSK의 데이터를 읽을 수 있다.

      • Apache Flink Kinesis Data Analytics
        - AWS의 관리형 클러스터에서 Apache Flink 애플리케이션을 실행 가능
        - Apache Flink는 표준 SQL보다 강력하기 때문에 고급 쿼리 능력이 필요하거나
        - Kinesis Data Streams나 Amazon MSK 같은 서비스로부터 스트리밍 데이터를 읽는 능력이 필요할때 Apache Flink용 Kinesis Data Analytics를 사용한다.
        - 이 서비스는 컴퓨팅 리소스를 자동으로 프로비저닝할 수 있다.
        - 병렬 연산과 오토 스케일링을 할 수 있다.
        - 체크포인트와 스냅샷으로 구현되는 애플리케이션 백업이 가능
        - Apache Flink 프로그래밍 기능을 사용 가능.
        - Apache Flink는 Kinesis Data Streams나 MSK 데이터는 읽지만 Kinesis Data Firehose의 데이터는 읽지 못한다.
        - Kinesis Data Firehose에서 데이터를 읽고 실시간 분석하려면 SQL 애플리케이션 용 Kinesis Data Analytics를 사용해야 한다.

  • ----------- SQL 애플리케이션 -----------
  • (실습) SQL 애플리케이션(래거시) = SQL 애플리케이션용
    Kinesis Data Analytics Studio와 Apache Flink 사용을 권장
    그러나 Firehose를 통해 데이터를 읽으려면 SQL 애플리케이션을 사용해야함.
  • (실습) 애플리케이션 이름을 정의한 다음 '실시간 분석'탭으로 가서 해당 애플리케이션의 SQL 코드를 작성할 수 있다.
  • ----------- Apache Flink ------------
  • (실습) 스트리밍 애플리케이션 = Apache Flink 애플리케이션을 생성하는 서비스목록
  • (실습) 스튜디오: 데이터 분석을 위해 스트리밍 애플리케이션을 실행할 수 있는 노트북 생성

Amazon Managed Streaming for Apache Kafka(Amazon MSK)

  • Apache Kafka용 Amazon 관리형 스트리밍 서비스 = Amazon MSK
    Kafka는 Amazon Kinesis의 대안
    두 서비스 모두 데이터를 스트리밍한다.
  • MSK: 완전 관리형 Kafka 클러스터 서비스
    - 그때그때 클러스터를 생성/업데이트/삭제한다.
    - MSK는 클러스터 내 브로커 노드와 Zookeeper 브로커 노드를 생성 및 관리
    - 고가용성을 위해 VPC의 클러스터를 최대 세 개의 다중 AZ 전역에 배포한다.
    - 일반 Kafka 장애를 자동 복구하는 기능이 있다.
    - EBS 볼륨에 데이터를 저장 가능
  • MSK 서버리스
    - MSK에서 Apache Kafka를 실행하지만 서버 프로비저닝이나 용량 관리가 필요 없다.
    - MSK가 리소스를 자동으로 프로비저닝하고 컴퓨팅과 스토리지를 스케일링한다.

Apache Kafka

  • Apache Kafka는 데이터를 스트리밍하는 방식
    • Kafka 클러스터는 여러 브로커로 구성
    • 데이터를 생산하는 생산자는 Kinesis, IoT, RDS 등의 데이터를 클러스터에 주입한다.
    • Kafka 주제로 데이터를 전송하면 해당 데이터는 다른 브로커로 완전 복제된다.
    • Kafka 주제는 실시간으로 데이터를 스트리밍하고 소비자는 데이터를 소비하기 위해 주제를 폴링한다.
    • 소비자는 데이터로 원하는 대로 처리하거나,
      EMR, S3, SageMaker, Kinesis, RDS 등의 대상으로 보낸다.

Kinesis Data Streams VS MSK

  • Kinesis Data Streams
    - 1MB의 메시지 크기 제한
    - 샤드로 데이터를 스트리밍
    - 용량 확장 = 샤드 분할, 용량 축소 = 샤드 병합
    - TLS 전송 중 암호화 기능 O
    - 저장 데이터 암호화 가능
  • Amazon MSK
    - 1MB는 기본값, 더 큰 메시지 보존을 위해 10MB 설정 가능
    - 파티션으로 Kafka 주제 사용
    - 파티션 추가로 주제 확장만 가능하다. (파티션 제거 불가능)
    - 평문 또는 TLS 전송 중 암호화 기능 O
    - 저장 데이터 암호화 가능
    - 1년 이상 데이터를 보관할 수 있음.(EBS 스토리지 비용 지불 시)

Amazon MSK Consumers(소비자)

  • MSK에 데이터를 생산하려면 Kafka 생산자를 생성해야 한다.
  • MSK의 데이터를 소비하는 방법
    • Apache Flink용 Kinesis Data Analytics를 사용해 Apache Flink 앱을 실행하고 MSK 클러스터의 데이터를 읽어 오면 된다.
    • AWS Glue로 ETL 작업 스트리밍
      Glue는 Apache Spark Streaming으로 구동
    • MSK를 이벤트 소스로 이용하려면 Lambda 함수 사용
    • 자체 Kafka 소비자를 생성해 원하는 플랫폼에서 실행 가능
      EC2, ECS, EKS

빅 데이터 수집 파이프라인

  • 이상적인 아키텍처
    • 애플리케이션 수집 파이프라인이 완전히 서버리스
    • AWS로 완전히 관리
    • 데이터를 실시간으로 수집
    • 실시간으로 수집된 데이터를 변환하고
    • 변환된 데이터를 SQL을 이용해 쿼리
    • 이 쿼리를 이용해 만드는 보고서는 S3에 저장한다.
    • 그 데이터를 데이터 웨어하우스로 로드해서 대시보드를 제작
      즉, 수집, 변환, 쿼리, 분석 등 일반적인 빅데이터 문제

구조

  • 데이터 생산자: IoT 기기
    AWS는 IoT Core로 IoT 디바이스를 관리할 수 있다.
  • 이 IoT 기기들은 실시간으로 IoT Core에 데이터를 전송할 수 있다.
    - IoT Core는 바로 Kinesis 데이터 스트림으로 전송한다.
    - Kinesis를 위한 데이터 스트림은 kinesis 서비스로 빠르게 빅데이터를 실시간으로 파이프할 수 있도록 해준다.
  • kinesis는 Kinesis Data Firehose와 소통하고, Firehose는 예를 들어 매 분 S3 버킷으로 데이터를 넣거나 오프로드 할 수 있도록 한다. -> 수집 버킷
    == 완전한 파이프라인이 있고 많은 디바이스로부터 많은 데이터를 실시간으로 받고 S3 버킷으로 매 분 넣는다.
  • 또한 Kinesis Data Firehose와 직접적으로 연결된 람다 함수를 이용해 데이터를 정리하거나 매우 빠르게 변환하는 것도 가능하다.
  • 수집 버킷으로 무엇을 할 수 있을까?
    - 수집 버킷으로 SQS 큐를 작동 시킬 수 있다.
    - 선택적으로 SQS 큐가 Lambda를 작동하게 할 수 있다.
    S3에서 직접적으로 람다를 호출할 수 있지만 SQS 큐로도 호출할 수 있음.
  • 이 Lambda는 Athena SQL 쿼리를 작동 시킬 수 있고, 이 Athena 쿼리가 수집 버킷에서 데이터를 꺼내고 서버리스인 SQL 쿼리를 수행한다.
  • 그리고 이 서버리스 쿼리의 출력은 보고(reporting) 버킷으로 들어갈 것이다.
    == 이 데이터가 보고되고 있거나 정화 또는 분석되고 있을 것이다.
  • 이것을 QuickSight를 통해서 바로 시각화 할 수 있다.
    * QuickSight는 데이터를 S3 버킷으로 시각화 할 수 있는 방법
  • 아니면 이 데이터를 분석을 위한 데이터 웨어하우스로 로드할 수도 있다.
    Redshift도 QuickSight를 위한 엔드포인트의 역할을 할 수 있다.

위 파이프라인 정리

  • IoT Core는 다양한 IoT 기기에서 데이터를 획득할 수 있게 도와준다.
  • Kinesis는 실시간 데이터 연결에 매우 적합하다.
  • Firehose는 S3로의 데이터를 거의 실시간에 가깝게 전송한다.(1분)
  • 람다는 Firehose가 데이터 변환을 할 수 있도록 도와준다.
  • S3는 SQS, SNS나 람다가 알림을 작동할 수 있도록 한다.
  • 람다는 SQS에 구독할 수 있지만 S3를 람다로 연결할 수도 있다
  • Athena는 서버리스 SQL 서비스로 Athena의 결과를 S3로 바로 다시 저장할 수 있다.
  • 보고 버킷은 분석된 데이터를 담고 있고, 시각화를 위한 QuickSight나 추가적인 분석을 위한 Redshift 등 으로 보고 도구를 사용할 수 있다.

0개의 댓글

관련 채용 정보