본문 바로가기
CSP (Cloud Service Provider)/GCP

[GCP] Cloud Dataflow

by BTC_유온 2022. 6. 16.

※ 포스팅된 내용은 서적 "Google Cloud Platform in Action"과 추가 검색한 자료를 토대로 정리했습니다.


데이터 처리
일부 데이터를 수집하여 어떤 형태로 변환함
하나의 데이터 청크를 다른 데이터 청크로 처리하거나 스트리밍 변환 등을 하는 것


첫번째  Apache Beam

(1) Apache Beam

 

데이터 처리 파이프라인 작업에 적합
파이썬과 자바 모두에서 바인딩이 있는 프레임워크
다양한 입력 데이터와 출력 데이터 작업뿐만 아니라 다양한 내장 데이터 변환을 사용하여 데이터 처리 파이프라인을 나타낼 수 있음

 


(2) Apache Beam 핵심 개념

ⓐ 파이프라인(pipeline)
많은 데이터 처리 작업의 상위 컨테이너
모든 입력 및 출력 데이터와 입력에서 원하는 출력으로 데이터를 조작하는 변환 단계를 캡슐화

Apache Beam을 사용하는 코드 작성 시 가장 먼저 작성

방향성이 있는 비순환적 그래프(DAG, Directed Acyclic Graph)

파이프라인 자체에는 많은 구성 옵션이 있어 사용자 정의가 가능
매개변수 이름을 정의하고, 해당 매개변수에 대한 기본 값을 설정하는 작업을 쉽게 수행할 수 있음

ⓑ PCollection
중간 청크 또는 데이터 스트림이 파이프라인을 통해 흐를 때 이를 나타내는 방법으로 작동
데이터를 나타내므로 일부 원시 데이터 포인트를 읽음으로써 새로운 PCollection을 생성하거나 기존의 PCollection에 대한 변환의 결과로 다른 PCollection을 생성
데이터를 나타내는 것으로, 데이터가 내부에서 표시되는 방식은 나타내지 않음

PCollection 자체는 변경 불가
한 번 생성하면 데이터를 변경할 수 없기 때문에 변경하고자 할 땐 새로운 PCollection을 생성해야 함
데이터를 반복할 수 있지만 PCollection의 개별 항목을 가져올 수 없음

ⓒ 변환(transforms)
입력 데이터를 가져와서 출력 데이터로, PCollection을 다른 PCollection으로 바꾸는 방법

파이프라인의 데이터를 손쉽게 조작할 수 있도록 하는 내장된 변환 기능이 있어, 데이터 필터링, 청크 분할, 특정 속성별로 데이터 그룹화, 데이터 결합 등이 가능
Beam에서 제공하는 내장 변환 외에도 사용자 정의 변환을 작성하여 파이프라인에서 사용 가능

변환의 대부분은 하나의 PCollection을 입력으로 사용하고 다른 하나는 출력으로 사용하지만, 둘 이상의 입력 또는 둘 이상의 출력도 가질 수 있음
기존 PCollection에 변형을 적용할 때 데이터 원본으로 사용된 기존의 것을 제거하지 않고 새로운 PCollection을 생성하는데, 이를 이용하면 동일한 파이프라인에서 여러 개의 변환에 대한 입력으로 동일한 PCollection 사용 가능

ⓓ 파이프라인 러너(pipeline runner)
주어진 파이프라인을 실행
파이프라인의 정의와 파이프라인의 실행은 다름
파이프라인의 정의는 Beam에만 한정되어 있지만, 작업을 구성하고 실행하는 기본 시스템은 정의에서 추상화됨

Beam을 사용하여 정의한 동일한 파이프라인을 가져와서 다양한 실행 엔진에서 실행할 수 있음
실행 엔진에는 자체 전략, 최적화 및 기능이 있을 수 있음

Apache Beam으로 파이프라인을 정의한 다음 다양한 파이프라인 러너를 사용하여 파이프라인을 실행할 수 있음
Apache Beam에서 정의한 파이프라인은 많은 파이프라인 러너에서 이식 가능함
즉, Beam 파이프라인을 실행 시 선택할 수 있는 옵션이 많음

DirectRunner
Apache Beam의 여러 파이프라인 러너 중 가장 간단한 옵션으로, 주로 로컬 머신에서 파이프라인을 실행하는 테스트 도구



두번째  Cloud Dataflow

 

Cloud Dataflow는 Apache Beam에서 사용 가능한 여러 옵션 중 하나로, 완전 관리형 파이프라인 러너
다른 파이프라인 러너와는 달리 다른 사전 구성 없이 파이프라인을 실행할 수 있음
구글 클라우드 플랫폼의 일부이기 때문에 다른 많은 서비스를 결합할 수 있음



세번째  가격 정책

 

연산(시간당 CPU), 메모리(시간당 GB) 및 디스크 저장소(시간당 GB)의 조합으로 리소스 비용을 구분
비용은 지역에 따라 달리 산정

Cloud Dataflow는 총 비용을 미리 예측하기 어려움
각 파이프라인이 다름
입력 데이터가 매우 다양함
특정 작업에 사용되는 VM 수가 다를 수 있음
전체적으로 사용되는 디스크 공간과 메모리의 양이 다를 수 있음

비용 추정을 위한 방안
ⓐ 작업 부하가 비용에 민감한 경우 사용할 특정 워커의 수 또는 최대 수를 설정하면 작업 시간당 총 비용이 제한됨
노드 수의 제한으로 작업이 오래 걸릴 수 있어 일정한 시간 내에 업무를 완료하기 어려울 수 있음
ⓑ 작은 입력으로 작업을 실행하여 시간에 따른 비용을 확인함으로써 특정 파이프라인에서의 비용이 시간이 지남에 따라 어떻게 조정되는지를 추정

댓글